Merge lp:~stefanor/ibid/releasenotes-0.1.1 into lp:~ibid-core/ibid/old-release-0.1-1.6

Proposed by Stefano Rivera
Status: Merged
Approved by: Stefano Rivera
Approved revision: 996
Merged at revision: 982
Proposed branch: lp:~stefanor/ibid/releasenotes-0.1.1
Merge into: lp:~ibid-core/ibid/old-release-0.1-1.6
Diff against target: 686 lines (+597/-6)
8 files modified
CHANGES (+435/-0)
docs/_extensions/extlinks.py (+67/-0)
docs/changes.rst (+8/-0)
docs/conf.py (+13/-2)
docs/configuration.rst (+2/-3)
docs/index.rst (+1/-0)
setup.py (+1/-1)
tools/format-changelog (+70/-0)
To merge this branch: bzr merge lp:~stefanor/ibid/releasenotes-0.1.1
Reviewer Review Type Date Requested Status
Keegan Carruthers-Smith Approve
Max Rabkin Approve
marcog (community) Approve
Jonathan Hitchcock Approve
Review via email: mp+47198@code.launchpad.net

Commit message

Added CHANGES and tool for generating changelog entries.
Set version to 0.1.1

To post a comment you must log in.
Revision history for this message
Jonathan Hitchcock (vhata) :
review: Approve
Revision history for this message
marcog (marco-gallotta) :
review: Approve
Revision history for this message
Ibid Branch Auto-Lander (ibid-tarmac) wrote :

Voting does not meet specified criteria. Required: Approve >= 2, Disapprove == 0. Got: 1 Approve.

Revision history for this message
Max Rabkin (max-rabkin) :
review: Approve
Revision history for this message
Keegan Carruthers-Smith (keegan-csmith) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'CHANGES'
--- CHANGES 1970-01-01 00:00:00 +0000
+++ CHANGES 2011-02-20 21:52:17 +0000
@@ -0,0 +1,435 @@
1Release 0.1.1 (2011-02-24)
2==============================
3
4Bug fix release, including a couple of security issues.
5
6Several plugins that consume Web services or scrape Web sites have been
7updated to cope with changes since the last release.
8
9There were no DB schema changes between 0.1.0 and 0.1.1.
10
11Resolved Security Issues
12------------------------
13
14Remote Execution
15^^^^^^^^^^^^^^^^
16
17:bug:`705860`:
18 Permissions were ignored for handlers not using :func:`@match
19 <ibid.plugins.match>`.
20 This allowed users to perform actions they were not authorised to.
21
22 However, no included plugins were exposed by this, all
23 access-restricted handlers had match patterns.
24
25Information Disclosure
26^^^^^^^^^^^^^^^^^^^^^^
27
28:bug:`567576`:
29 Occasionally insecure permissions on log files.
30 When the bot spoke first (creating a new log file), the log file
31 would be publicly readable, even if the message was sent in private.
32
33 Example:
34 If the bot delivered a *privmsg* memo to a user at the beginning of
35 the month, it would create the logfile with public readable
36 permissions.
37 If the logfile directory was published by a web server, this would
38 make this private conversation log accessible to the public.
39
40 Resolution: Now channels must be explicitly configured to have
41 publicly readable logs.
42
43:bug:`649383`:
44 If someone received a private message from the bot
45 during a public meeting, the message could appear in the meeting
46 minutes.
47
48 Example: a *privmsg* memo received during a meeting would appear in
49 the minutes.
50
51Major User Visible Changes
52--------------------------
53
54* New configuration option ``plugins.log.public_logs``, a list of
55 ``source:channel`` globs of channels to log in files with publically
56 readable permissions.
57
58* New configuration option ``plugins.ascii.preferred_fonts``, a list of
59 figlet fonts, the first one found is the default.
60
61* Currency exchange now uses Yahoo instead of XE.com.
62
63API Changes
64-----------
65
66* New Function: :func:`ibid.utils.parse_timestamp` for parsing
67 well-formatted timestamps.
68
69* New Function: :func:`ibid.utils.generic_webservice` for retrieving
70 arbitrary data from a web-service.
71
72* New Function: :func:`ibid.db.get_regexp_op` which returns a REGEXP
73 SqlAlchemy operator for the DBMS in use.
74
75All Changes
76-----------
77
782011-02-20 Stefano Rivera <stefano@rivera.za.net>
79
80 Filter out empty definitions in gdefine.
81
82 Fixes: :bug:`719851`.
83
842011-02-20 Stefano Rivera <stefano@rivera.za.net>
85
86 We don't support SQLAlchemy 0.6 yet.
87
88 Fixes: :bug:`651992`.
89
902011-02-20 Marco Gallotta <marco@gallotta.co.za>
91
92 Only append .com for url's like "example".
93
94 Fixes: :bug:`702062`.
95
962011-02-20 Stefano Rivera <stefano@rivera.za.net>
97
98 Use escape=# for LIKEs.
99 Perform literal queries on all non-get Factoid operations. Return
100 useful error if start index is too high.
101 Substitute $arg for _% in search.
102
103 Fixes: :bug:`544493`.
104
1052011-02-20 Stefano Rivera <stefano@rivera.za.net>
106
107 HTTPErrors should result in using url as title, not abandoning the
108 grab.
109
110 Fixes: :bug:`702798`.
111
1122011-02-20 Stefano Rivera <stefano@rivera.za.net>
113
114 Catch ImportErrors for packages we don't require in setup.py.
115
116 Fixes: :bug:`651990`.
117
1182011-02-20 Stefano Rivera <stefano@rivera.za.net>
119
120 pysqlite is only necessary on ancient Pythons.
121
122 Fixes: :bug:`708302`.
123
1242011-01-25 Stefano Rivera <stefano@rivera.za.net>
125
126 Add function get_regexp_op to ibid.db that returns a REGEXP op that
127 works on Postgres too.
128
129 Fixes: :bug:`595423`.
130
1312011-01-22 Keegan Carruthers-Smith <keegan.csmith@gmail.com>
132
133 Use correct plurality in pending memos message.
134
135 Fixes :bug:`634257`.
136
1372011-01-22 Stefano Rivera <stefano@rivera.za.net>
138
139 Add parse_timestamp function to ibid.utils, use for parsing
140 timestamps from Twitter.
141
142 Fixes :bug:`702815`.
143
1442011-01-22 Stefano Rivera <stefano@rivera.za.net>
145
146 URLErrors have reasons, but there are other HTTPErrors
147
148 Fixes :bug:`670855`.
149
1502011-01-21 Max Rabkin <max.rabkin@gmail.com>
151
152 Enforce permissions on non-@match handlers.
153
154 Fixes :bug:`705860`.
155
1562011-01-19 Stefano Rivera <stefano@rivera.za.net>
157
158 Handle non-500 error codes from twitter.
159
160 Fixes :bug:`670855`.
161
1622011-01-19 Stefano Rivera <stefano@rivera.za.net>
163
164 Strip tags from gcalc response.
165
166 Fixes :bug:`702371`.
167
1682011-01-19 Max Rabkin <max.rabkin@gmail.com>
169
170 Check content_type is set before checking its value.
171
172 Fixes :bug:`701900`.
173
1742011-01-19 Max Rabkin <max.rabkin@gmail.com>
175
176 Catch exceptions when polling feeds so that one broken feed doesn't
177 stop all feeds.
178
179 Fixes :bug:`578396`.
180
1812011-01-19 Max Rabkin <max.rabkin@gmail.com>
182
183 Use new OEIS API at oeis.org
184
185 Fixes :bug:`700475`.
186
1872010-12-25 Stefano Rivera <stefano@rivera.za.net>
188
189 Fix for the logging open file cache: Logs in logs might not be in
190 recent_logs.
191
192 Fixes :bug:`655645`.
193
1942010-12-25 Stefano Rivera <stefano@rivera.za.net>
195
196 Support toilet fonts, correctly decode utf-8 figlet output, handle
197 font choice edge cases.
198
199 Fixes :bug:`607743`.
200
2012010-12-24 Stefano Rivera <stefano@rivera.za.net>
202
203 Follow redirects in "is it up"
204
205 Fixes :bug:`599410`.
206
2072010-12-24 Stefano Rivera <stefano@rivera.za.net>
208
209 Rework nickserv auth to allow simultaneous authentications for the
210 same nick (although Nickserv will only be bothered once).
211
212 Fixes :bug:`655647`.
213
2142010-12-24 Stefano Rivera <stefano@rivera.za.net>
215
216 Use absolute imports to import SILC correctly
217
218 Fixes :bug:`654202`.
219
2202010-12-20 Stefano Rivera <stefano@rivera.za.net>
221
222 Country Code list parsing: Check for ; in a line before splitting by
223 semi-colons.
224
225 Fixes :bug:`692347`.
226
2272010-12-20 Max Rabkin <max.rabkin@gmail.com>
228
229 Don't treat feeds with no messages as errors.
230
231 Fixes :bug:`661187`.
232
2332010-11-08 Stefano Rivera <stefano@rivera.za.net>
234
235 Correctly handle state events that have no channel.
236
237 Fixes :bug:`656349`.
238
2392010-11-07 Stefano Rivera <stefano@rivera.za.net>
240
241 Port google scrape search to get_html_parse_tree + etree. Handle
242 superscript in gcalc.
243
244 Fixes :bug:`580696`.
245
2462010-11-07 Stefano Rivera <stefano@rivera.za.net>
247
248 Put periodic lock-using code in a try...finally block.
249
2502010-10-15 Stefano Rivera <stefano@rivera.za.net>
251
252 Support twitter's new AJAX URLs.
253
254 Fixes :bug:`654535`.
255
2562010-10-15 Stefano Rivera <stefano@rivera.za.net>
257
258 Always respond to memo sending with confirmation of recipient. Allow
259 memos to begin with "on ..." when not naming a known source.
260
261 Fixes :bug:`634253`.
262
2632010-10-04 Stefano Rivera <stefano@rivera.za.net>
264
265 Disallow empty factoid names.
266
267 Fixes :bug:`606065`.
268
2692010-10-05 Guy Halse
270
271 Allow bot to identify with zanet.net's NickServ.
272
273 Fixes :bug:`652000`.
274
2752010-10-03 Stefano Rivera <stefano@rivera.za.net>
276
277 [SECURITY] Add a configuration glob-list of channels which should
278 have public logs, rather than attempting to guess.
279
280 Fixes :bug:`567576`.
281
2822010-09-30 Stefano Rivera <stefano@rivera.za.net>
283
284 Docs: Be clear that ibid is in Debian & Ubuntu.
285
2862010-09-30 Stefano Rivera <stefano@rivera.za.net>
287
288 Handle 0 tweets in Twitter Atom feed parsing, correctly handle it
289 elsewhere instead of treating it as no such twit.
290
291 Fixes :bug:`646989`.
292
2932010-09-29 Max Rabkin <max.rabkin@gmail.com>
294
295 [SECURITY] Don't leak private messages to meeting logs.
296
297 Fixes :bug:`649383`.
298
2992010-08-14 Stefano Rivera <stefano@rivera.za.net>
300
301 Don't try to process() events without a message in meeting.
302
303 Fixes :bug:`598094`.
304
3052010-07-10 Stefano Rivera <stefano@rivera.za.net>
306
307 Correct abbreviated cross-ref format, shown up by Sphinx 1.0b1.
308
3092010-07-04 Stefano Rivera <stefano@rivera.za.net>
310
311 Display latest tweets from retweeting-twits instead of thinking they
312 don't exist.
313
314 Fixes :bug:`554906`.
315
3162010-06-13 Michael Gorven <michael@gorven.za.net>
317
318 Fix real JID detection when more than one 'x' element is received.
319
3202010-06-07 Stefano Rivera <stefano@rivera.za.net>
321
322 NickServ support for rizon.
323
3242010-06-04 Stefano Rivera <stefano@rivera.za.net>
325
326 Switch from XE.com to Yahoo for currency conversions.
327
3282010-06-04 Stefano Rivera <stefano@rivera.za.net>
329
330 Limit the size of the file-descriptor pool in log.
331
332 Fixes :bug:`567571`.
333
3342010-05-12 Stefano Rivera <stefano@rivera.za.net>
335
336 Google is also a calculator.
337
338 Fixes :bug:`574300`.
339
3402010-05-12 Stefano Rivera <stefano@rivera.za.net>
341
342 Use explicit lower() on each side of LIKE so factoids with arguments
343 can be case-insensitive on Postgres.
344
345 Fixes :bug:`574427`.
346
3472010-05-05 Max Rabkin <max.rabkin@gmail.com>
348
349 Escape query url in google scrape.
350
351 Fixes :bug:`572308`.
352
3532010-05-05 Stefano Rivera <stefano@rivera.za.net>
354
355 Incorrect substitution in SQLite indexing warning.
356
3572010-05-05 Stefano Rivera <stefano@rivera.za.net>
358
359 Change administrative user & identity linking syntax to be less
360 problematically broad.
361
362 Fixes :bug:`567510`.
363
3642010-04-26 Stefano Rivera <stefano@rivera.za.net>
365
366 Increase default HTTP GET size from 500 bytes to 2kiB.
367
368 Fixes :bug:`563928`.
369
3702010-04-13 Stefano Rivera <stefano@rivera.za.net>
371
372 Update youtube plugin to cope with site redesign.
373
374 Fixes :bug:`561684`.
375
3762010-04-13 Max Rabkin <max.rabkin@gmail.com>
377
378 Allow digits in Unicode character names.
379
3802010-04-13 Stefano Rivera <stefano@rivera.za.net>
381
382 HTTP GET: Don't assume everything is utf-8, decode according to
383 provided charset, fall back to utf-8 for text, and guess with chardet
384 if either of those was wrong.
385
386 Fixes :bug:`560973`.
387
3882010-04-09 Max Rabkin <max.rabkin@gmail.com>
389
390 Use unicode case-insensitive matching in factoid.
391
392 Fixes :bug:`542707`.
393
3942010-03-27 Michael Gorven <michael@gorven.za.net>
395
396 Treat the Processor's first feature as the primary feature in RPC.
397
398 Fixes :bug:`545168`.
399
4002010-03-27 Max Rabkin <max.rabkin@gmail.com>
401
402 Respond with unicode in bible error handlers.
403
404 Fixes :bug:`544260`.
405
4062010-03-26 Marco Gallotta <marco@gallotta.co.za>
407
408 Allow trailing punctuation in tea-style addressing.
409
410 Fixes :bug:`545186`.
411
4122010-03-23 Marco Gallotta <marco@gallotta.co.za>
413
414 Add username=ibid parameter to geonames API calls. Some calls now
415 require it.
416
417 Fixes :bug:`543989`.
418
4192010-03-23 Max Rabkin <max.rabkin@gmail.com>
420
421 Python 2.5 compatibility update for unicode lookup. Exception for
422 unknown character changed in 2.6.
423
424 Fixes :bug:`542593`.
425
4262010-03-10 Stefano Rivera <stefano@rivera.za.net>
427
428 Add placeholder to force ibid/static to be distributed.
429
430Release 0.1.0 (2010-03-10)
431==========================
432
433* First public release.
434
435.. vi: set ft=rst et sta sw=3 ts=3:
0436
=== added directory 'docs/_extensions'
=== added file 'docs/_extensions/extlinks.py'
--- docs/_extensions/extlinks.py 1970-01-01 00:00:00 +0000
+++ docs/_extensions/extlinks.py 2011-02-20 21:52:17 +0000
@@ -0,0 +1,67 @@
1# -*- coding: utf-8 -*-
2# Backport of sphinx.ext.extlinks to Sphinx 0.6
3"""
4 sphinx.ext.extlinks
5 ~~~~~~~~~~~~~~~~~~~
6
7 Extension to save typing and prevent hard-coding of base URLs in the reST
8 files.
9
10 This adds a new config value called ``extlinks`` that is created like this::
11
12 extlinks = {'exmpl': ('http://example.com/%s.html', prefix), ...}
13
14 Now you can use e.g. :exmpl:`foo` in your documents. This will create a
15 link to ``http://example.com/foo.html``. The link caption depends on the
16 *prefix* value given:
17
18 - If it is ``None``, the caption will be the full URL.
19 - If it is a string (empty or not), the caption will be the prefix prepended
20 to the role content.
21
22 You can also give an explicit caption, e.g. :exmpl:`Foo <foo>`.
23
24 :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
25 :license: BSD, see LICENSE for details.
26"""
27
28import re
29
30from docutils import nodes, utils
31
32explicit_title_re = re.compile(r'^(.+?)\s*(?<!\x00)<(.*?)>$', re.DOTALL)
33def split_explicit_title(text):
34 """Split role content into title and target, if given."""
35 match = explicit_title_re.match(text)
36 if match:
37 return True, match.group(1), match.group(2)
38 return False, text, text
39
40def make_link_role(base_url, prefix):
41 def role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
42 text = utils.unescape(text)
43 has_explicit_title, title, part = split_explicit_title(text)
44 try:
45 full_url = base_url % part
46 except (TypeError, ValueError):
47 env = inliner.document.settings.env
48 env.warn(env.docname, 'unable to expand %s extlink with base '
49 'URL %r, please make sure the base contains \'%%s\' '
50 'exactly once' % (typ, base_url))
51 full_url = base_url + part
52 if not has_explicit_title:
53 if prefix is None:
54 title = full_url
55 else:
56 title = prefix + part
57 pnode = nodes.reference(title, title, refuri=full_url)
58 return [pnode], []
59 return role
60
61def setup_link_roles(app):
62 for name, (base_url, prefix) in app.config.extlinks.iteritems():
63 app.add_role(name, make_link_role(base_url, prefix))
64
65def setup(app):
66 app.add_config_value('extlinks', {}, 'env')
67 app.connect('builder-inited', setup_link_roles)
068
=== added file 'docs/changes.rst'
--- docs/changes.rst 1970-01-01 00:00:00 +0000
+++ docs/changes.rst 2011-02-20 21:52:17 +0000
@@ -0,0 +1,8 @@
1:tocdepth: 2
2
3Changes in Ibid
4***************
5
6.. include:: ../CHANGES
7
8.. vi: set et sta sw=3 ts=3:
09
=== modified file 'docs/conf.py'
--- docs/conf.py 2011-01-15 08:51:05 +0000
+++ docs/conf.py 2011-02-20 21:52:17 +0000
@@ -13,6 +13,8 @@
1313
14import sys, os14import sys, os
1515
16import sphinx
17
16# If extensions (or modules to document with autodoc) are in another directory,18# If extensions (or modules to document with autodoc) are in another directory,
17# add these directories to sys.path here. If the directory is relative to the19# add these directories to sys.path here. If the directory is relative to the
18# documentation root, use os.path.abspath to make it absolute, like shown here.20# documentation root, use os.path.abspath to make it absolute, like shown here.
@@ -22,7 +24,11 @@
2224
23# Add any Sphinx extension module names here, as strings. They can be extensions25# Add any Sphinx extension module names here, as strings. They can be extensions
24# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.26# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
25extensions = []27sys.path.append(os.path.abspath('_extensions'))
28if sphinx.__version__ > '1.0':
29 extensions = ['sphinx.ext.extlinks']
30else:
31 extensions = ['extlinks']
2632
27# Add any paths that contain templates here, relative to this directory.33# Add any paths that contain templates here, relative to this directory.
28templates_path = ['_templates']34templates_path = ['_templates']
@@ -47,7 +53,7 @@
47# The short X.Y version.53# The short X.Y version.
48version = '0.1'54version = '0.1'
49# The full version, including alpha/beta/rc tags.55# The full version, including alpha/beta/rc tags.
50release = '0.1.0'56release = '0.1.1'
5157
52# The language for content autogenerated by Sphinx. Refer to documentation58# The language for content autogenerated by Sphinx. Refer to documentation
53# for a list of supported languages.59# for a list of supported languages.
@@ -192,3 +198,8 @@
192198
193# If false, no module index is generated.199# If false, no module index is generated.
194#latex_use_modindex = True200#latex_use_modindex = True
201
202# -- Options for extensions ----------------------------------------------------
203
204# pre-1.0 mode intersphinx:
205extlinks = {'bug': ('https://bugs.launchpad.net/bugs/%s', 'LP: #')}
195206
=== modified file 'docs/configuration.rst'
--- docs/configuration.rst 2010-02-26 08:29:31 +0000
+++ docs/configuration.rst 2011-02-20 21:52:17 +0000
@@ -170,9 +170,8 @@
170 **Reqired**170 **Reqired**
171 String: The hostname of the IRC server to connect to.171 String: The hostname of the IRC server to connect to.
172172
173 Ibid `does not currently support173 Ibid :bug:`does not currently support <363466>` falling back to
174 <https://bugs.launchpad.net/bugs/363466>`_ falling back to alternate174 alternate servers, so you may want to use a round-robin hostname.
175 servers, so you may want to use a round-robin hostname.
176175
177.. describe:: port:176.. describe:: port:
178177
179178
=== modified file 'docs/index.rst'
--- docs/index.rst 2010-01-12 16:29:15 +0000
+++ docs/index.rst 2011-02-20 21:52:17 +0000
@@ -11,6 +11,7 @@
11 tutorial11 tutorial
12 contributing12 contributing
13 api/index13 api/index
14 changes
1415
1516
16Indices and tables17Indices and tables
1718
=== modified file 'setup.py'
--- setup.py 2011-02-20 20:34:20 +0000
+++ setup.py 2011-02-20 21:52:17 +0000
@@ -35,7 +35,7 @@
3535
36setup(36setup(
37 name='Ibid',37 name='Ibid',
38 version='0.1.0',38 version='0.1.1',
39 description='Multi-protocol general purpose chat bot',39 description='Multi-protocol general purpose chat bot',
40 url='http://ibid.omnia.za.net/',40 url='http://ibid.omnia.za.net/',
41 keywords='chat bot irc jabber twisted messaging',41 keywords='chat bot irc jabber twisted messaging',
4242
=== added directory 'tools'
=== added file 'tools/format-changelog'
--- tools/format-changelog 1970-01-01 00:00:00 +0000
+++ tools/format-changelog 2011-02-20 21:52:17 +0000
@@ -0,0 +1,70 @@
1#!/usr/bin/env python
2
3import optparse
4import re
5import subprocess
6import textwrap
7
8def process_block(block):
9 "Reformat a block into nice rst"
10 block = ''.join(block).decode('utf-8').strip()
11
12 template_re = re.compile(r'^\tAuthor: .*\n'
13 r'(?:\tMerge Request: .*\n)?'
14 r'\tApproved by: .*\n'
15 r'\tFixes LP: #(.*)$',
16 re.MULTILINE | re.UNICODE)
17 def repl(m):
18 bugs = [int(bug) for bug in m.group(1).split(',')]
19 if bugs:
20 bugs = [u':bug:`%i`' % bug for bug in bugs]
21 return u'\n\tFixes: %s.' % u', '.join(bugs)
22 return u''
23 block = template_re.sub(repl, block)
24
25 block = block.splitlines()
26
27 wrapper = textwrap.TextWrapper(subsequent_indent=u' ')
28 for i, line in enumerate(block):
29 if not line.strip():
30 line = u''
31
32 if line.startswith(u'\t'):
33 line = u' ' + line[1:]
34 if i + 1 == len(block) or not block[i+1].strip():
35 if not line.endswith(u'.'):
36 line += u'.'
37
38 line = u'\n'.join(wrapper.wrap(line))
39
40 block[i] = line
41
42 block.append(u'')
43 block = u'\n'.join(block)
44 print block.encode('utf-8')
45
46def main():
47 parser = optparse.OptionParser()
48 parser.add_option('-r', '--revision', metavar='REVSPEC',
49 help='Passed to bzr')
50 opts, args = parser.parse_args()
51
52 cmd = ['bzr', 'log', '--gnu', '-n1']
53 if opts.revision:
54 cmd.append('-r' + opts.revision)
55 p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
56
57 head_re = re.compile(r'^\d{4}-\d{2}-\d{2} .+ <.+>$')
58 block = []
59 for line in p.stdout:
60 if head_re.match(line):
61 process_block(block)
62 block = []
63 block.append(line)
64
65 process_block(block)
66
67 assert p.wait() == 0
68
69if __name__ == '__main__':
70 main()

Subscribers

People subscribed via source and target branches