Jon Johnson
a2765aef3a
Fix typo in jabber mirror error
...
assistence -> assistance
2015-09-26 22:03:00 +00:00
Tim Abbott
aed2e0d2f9
Remove certain hardcoded email addresses in Zephyr mirroring.
...
(imported from commit 9fd492b5463f04741558687f27522d48a5dc795b)
2015-09-20 00:36:12 -07:00
Tim Abbott
c20623b841
Change API example usernames to use example.com domain.
...
(imported from commit 41b7be58735df0ea3d3a3daf23bc0f78606abc0d)
2015-09-19 18:12:02 -07:00
Zev Benjamin
7784fb9758
Update Trac bot config
...
(imported from commit 07e976637882030faedbf2e34448404e7e1de379)
2015-02-05 22:46:30 -08:00
Zev Benjamin
2cd47bba2b
Update Git bot config
...
(imported from commit 8c189e199178efd8aa054d9762cb26330ab4ae86)
2015-02-05 22:46:30 -08:00
Zev Benjamin
b2e1acfd44
Update Nagio's zuliprc
...
(imported from commit ac06b7cf41b1c0353c2096c4b9befae432fd7c5b)
2015-02-05 22:46:30 -08:00
Jason Michalski
56a353c5ac
Raise the queue depth limits for missedmessage_emails
...
(imported from commit 73a0da21930d9bc121e07c811483311ec171fe7b)
2014-10-06 15:27:54 -07:00
Jason Michalski
1d649fe611
Add an options to set jabber server details
...
--jabber-server-address=JABBER_SERVER_ADDRESS
The hostname of your Jabber server
--jabber-server-port=JABBER_SERVER_PORT
The port of your Jabber server
(imported from commit f6b73ce6a2e3dcdbb100a1b6aba5ad89fc99a457)
2014-07-29 21:46:34 -07:00
Jason Michalski
700e744690
Update message events to include is_mirror_dummy
...
This can be used by mirroring scripts to only forward messages to users
who do not zulip accounts.
(imported from commit 200d6bcaaf39238bfb01480a9e906d567d4d9e11)
2014-07-29 21:46:34 -07:00
Zev Benjamin
ec97f93ba5
Update user_root path for personal zmirrors
...
The location of the api directory moved.
(imported from commit 408ef7d47e729a0ad2454a5326cfaddcfff9855f)
2014-05-20 17:29:29 -07:00
Zev Benjamin
8829e654c1
zephyr_mirror: Specify a z_charset of utf-8
...
andersk reports that we are "incorrectly sending outgoing zephyrs with z_charset
= ZCHARSET_ISO_8859_1, which breaks zwgc (other clients tend to ignore
z_charset). I'm assuming you're shelling out to zwrite; you need to use zwrite
-x UTF-8, or export LC_ALL=en_US.UTF-8."
(imported from commit 8abb28bf8acbe0b5aa99ca13faab24e1e554a031)
2014-05-20 17:29:29 -07:00
Zev Benjamin
9e4b680e1f
zephyr_mirror: Use timeout_success_equivalent in front-end script
...
(imported from commit 2263a371edda74c1c38a377e0fef5372999888b4)
2014-04-23 11:31:04 -07:00
Zev Benjamin
d12490b3e5
jabber_mirror: Use timeout_success_equivalent in front-end script
...
(imported from commit 6ca8ec5a2c31d20e4e437804c65650c5a98c69f9)
2014-04-23 11:31:04 -07:00
Zev Benjamin
45b90fc33d
jabber_mirror: Explicitly exit when we encounter an error in the main loop
...
(imported from commit 19b0f29bfd8c01fa300bdb9db2011bba0b55ddd4)
2014-04-23 11:31:04 -07:00
Zev Benjamin
43ef992ab0
jabber_mirror: Don't try to restart on errors caused by initial configuration
...
(imported from commit 5d9e6c88e1a159fe6e5e46c21c483b5c79444223)
2014-04-23 11:31:03 -07:00
Zev Benjamin
a4f3a0c79e
jabber_mirror: Split out into front-end and back-end processes
...
This adds auto-restarting capability.
(imported from commit 74a01a0272025706f2eb902eeedd9c05ee054272)
2014-04-23 11:31:03 -07:00
Zev Benjamin
41a782e011
Move backoff classes to the Zulip API
...
(imported from commit 76c5d499874f0397c505ab3fcda631a1a46847b6)
2014-04-23 11:31:03 -07:00
Jessica McKellar
ee04f7b3e8
[puppet] Change digest email send time by 1 hour for daylight savings.
...
(imported from commit 8ac1747f15e10b850f73ce28ea4579bee62ba1a4)
2014-03-14 20:48:49 -04:00
Zev Benjamin
9fcd95b2df
jabber_mirror: Calculate the zulip domain from the client email address
...
We were previously calculating it from the zulip_email option, which might not
be set if it is being specified via the config file.
(imported from commit 76866c239ca63ef90a7967c9a6027aeec9be6390)
2014-03-06 21:59:55 -05:00
Zev Benjamin
83afe8f6f8
jabber_mirror: Report a useful error message when fetching initial Zulip streams/subscriptions
...
(imported from commit 1133cb0ddb349cda7e16586fba4ba72888e66887)
2014-03-04 23:02:27 -05:00
Zev Benjamin
799953e7df
jabber_mirror: Fix Zulip error handling
...
(imported from commit 8548576635e5be9b725e059c2d4d9ef9953ec97a)
2014-03-04 23:02:27 -05:00
Zev Benjamin
ce660ac03f
jabber_mirror: Add option to append a suffix to Zulip usernames
...
This is needed for the ist.mit.edu realm, where the same email address could be
used for all three of Zulip, Jabber, and Zephyr. To disambiguate Jabber mirror
dummy users from Zephyr mirror dummy users with the same email address (but
which would be in a different realm), we force all email addresses in the
ist.mit.edu realm to have local parts that end in "+ist".
(imported from commit 5ebad2cc8f6c7286b4b9426d57ed75578703fb86)
2014-03-04 23:02:27 -05:00
Zev Benjamin
967b3c7156
jabber_mirror: Remove dead code
...
(imported from commit b67faad6888713554929c7e6a8147d19c489956a)
2014-03-04 23:02:27 -05:00
Zev Benjamin
c040d16425
jabber_mirror: Allow the mode to be specified in the config file
...
(imported from commit 8de5006f6935271997204d958c44c03ebf14c403)
2014-03-04 23:02:27 -05:00
Zev Benjamin
b5c326b444
jabber_mirror: Remove --openfire option
...
It doesn't actually seem to be necessary to adjust the SSL version in current
versions of Openfire.
(imported from commit 6766d9fd5081cf16f2a5e3e2b008f20e7498caa4)
2014-03-04 23:02:27 -05:00
Zev Benjamin
2f70b8ff39
jabber_mirror: Allow the MUC nickname to be specified
...
This allows users to run the public mirror as a regular user.
(imported from commit 3512dacf329dadc784d7be492ad290b17082bad4)
2014-03-04 23:02:27 -05:00
Zev Benjamin
88458043bb
jabber_mirror: Change the default resource to 'zulip'
...
(imported from commit 290dca7fce5230dc94425478ad48fb8b8a0952b6)
2014-03-04 23:02:26 -05:00
Zev Benjamin
3e13e87a84
jabber_mirror: Guess the conference domain when it isn't specified
...
(imported from commit 3fed4bdf5ca73b3b9d58ec42a2031e75e813bbd2)
2014-03-04 23:02:26 -05:00
Zev Benjamin
d2bc74003e
jabber_mirror: Use sleekxmpp.JID when manipulating message recipients
...
(imported from commit 57b8384bf79a60abbaf535bd11f222d7f63db251)
2014-03-04 23:02:26 -05:00
Zev Benjamin
98a8680af7
jabber_mirror: Take a JID on the commandline instead of a separate Jabber username and domain
...
We also take the opportunity to use the sleekxmpp JID parsing more instead of
doing string manipulation.
(imported from commit 6e4ba0bd2c241666fcde42333ff68b879d8ab2b7)
2014-03-04 23:02:26 -05:00
Zev Benjamin
54695684d9
jabber_mirror: Allow Jabber options to be specified in the Zulip config file
...
(imported from commit 7911fdd4c8a2e8668c01627697a3cd8a153d4612)
2014-03-03 17:30:58 -05:00
Zev Benjamin
c90913850a
jabber_mirror: Clean up help text
...
(imported from commit bd9a4682c754423047a993b8914d965c2e12fdf4)
2014-03-03 17:30:58 -05:00
Zev Benjamin
2d311b93df
jabber_mirror: Ignore attempts to join invalid MUCs
...
(imported from commit a82d53af1f581d059b6457a1bf7afe92af5d42d9)
2014-03-03 17:30:58 -05:00
Zev Benjamin
2d8910dc7e
jabber_mirror: Configure rooms after joining
...
(imported from commit d4c6e895dca1c7002ce39db81b671ba1c975d517)
2014-03-03 17:30:58 -05:00
Zev Benjamin
32ec19cb12
jabber_mirror: Don't try to mirror messages from rooms themselves
...
These are usually administrative messages.
(imported from commit 58cbbc739fdd47acc586c235aedd2fccc83654fd)
2014-03-03 17:30:58 -05:00
Zev Benjamin
6609291d54
jabber_mirror: Change character used for loop detection
...
Previously, we were using U+1B80, which is 'SUNDANESE SIGN PANYECEK' (i.e., an
assigned character). U+1FFFE is a non-character (i.e., free for internal use)
on Plane 1.
(imported from commit f93d2401733afb96b6d717a7f659c011299071df)
2014-03-03 17:30:58 -05:00
Zev Benjamin
f239b02027
jabber_mirror: Dynamically join and leave MUCs
...
For personal mirrors, this means that the mirror should join all Jabber rooms
corresponding to their Zulip subscriptions. For the public mirror, this means
that the mirror should join all Jabber rooms corresponding to Zulip streams that
end in "/xmpp".
(imported from commit 16ed9e3deee7e02b2ae0dd79925f0ed5c4acd044)
2014-03-03 17:30:58 -05:00
Zev Benjamin
f87e410787
jabber_mirror: Pull rooms to join from Zulip based on mode
...
(imported from commit 115d4d4732d8ff4f12d336cfc42a056183251d87)
2014-03-03 17:29:53 -05:00
Zev Benjamin
d476547319
jabber_mirror: Document which mode handles which kinds of messages
...
(imported from commit 983224ac58bce724529806f6b8eaa3ea30cc730b)
2014-03-03 17:29:53 -05:00
Zev Benjamin
810b219f8c
jabber_mirror: Only mirror messages from streams that end in '/xmpp'
...
(imported from commit 5213d40063361ffcf073772580ac0f699228cb3f)
2014-03-03 17:29:53 -05:00
Zev Benjamin
1b946b8565
jabber_mirror: Mirror Jabber room 'foo' to stream 'foo/xmpp'
...
(imported from commit db771b5b5056cdca5780b90f66924c6f9ae3e84d)
2014-03-03 17:29:53 -05:00
Zev Benjamin
2bf61eea89
jabber_mirror: Use new-style client name
...
(imported from commit a1bc5b076a9c0384c1abdc2377183b0eac19f450)
2014-03-03 17:29:53 -05:00
Zev Benjamin
26f4849af2
jabber_mirror: Add --debug option
...
(imported from commit 8d6986ba97f464359a1fe214d5605fa744660a9b)
2014-03-03 17:29:53 -05:00
Zev Benjamin
0d5d37a211
jabber_mirror: Exit if we fail to connect to the Jabber server
...
(imported from commit f5cc600325a3547412cf0b05239c988410354c10)
2014-03-03 17:29:53 -05:00
Zev Benjamin
52be065eda
jabber_mirror: Respond to XMPP pings
...
Other clients like Pidgin sends these.
(imported from commit 61c69a080accda939b82ce8701b10ffc6dda672e)
2014-03-03 17:29:53 -05:00
Zev Benjamin
84412572a1
jabber_mirror: Working PM mirroring
...
(imported from commit 34617f989e83029c6591461adc3ffa18ddea2037)
2014-03-03 17:29:53 -05:00
Zev Benjamin
2185d42a90
jabber_mirror: Working room/stream mirroring
...
(imported from commit 5d0a33423e90edaee3a1094b1d48fae73cfb54ca)
2014-03-03 17:29:53 -05:00
Zev Benjamin
f1e3d9ab76
jabber_mirror: Require the --conference-domain option when running in 'public' mode
...
(imported from commit 1dd564a212538e292ffc8b7a52caf7eae66d4475)
2014-03-03 17:29:53 -05:00
Zev Benjamin
e9684a01fd
jabber_mirror: Clarify the two modes the mirror can run in
...
(imported from commit 8084e0552b06c6763f2f13a63c90c9dc73d6bf90)
2014-03-03 17:29:53 -05:00
Zev Benjamin
e5dca4a1a2
zephyr_mirror: Fix comment
...
(imported from commit aed76ecc3b4fd8bb01c299169a8e4eefd35f7cd8)
2014-03-03 17:29:53 -05:00
Zev Benjamin
8a4891aff7
jabber_mirror: Take the Jabber username as a separate option
...
(imported from commit 86131c7502df7b841c34b09c0e94b071c89b3fde)
2014-03-03 17:29:52 -05:00
Zev Benjamin
d0a875f88a
jabber_mirror: Use zulip.init_from_options
...
(imported from commit 5839c5308a948d2c060d1eb5688b9cf0bd9ed3a2)
2014-03-03 17:29:52 -05:00
Zev Benjamin
5fe2caeb5e
jabber_mirror: Separate Jabber options into their own group
...
(imported from commit 223ecceee956ab30b1647eb0925d11982b2ef37d)
2014-03-03 17:29:52 -05:00
Zev Benjamin
0c9a5179ae
jabber_mirror: Use the Zulip API option group
...
(imported from commit 68243e4ebd44cd3b08bf0789c34bb85016d0d1b9)
2014-03-03 17:29:52 -05:00
Zev Benjamin
4db2dab645
api: Disambiguate the names of Zulip options
...
(imported from commit 67525764cc2f2a26081640063e2d78852f6229ca)
2014-03-03 17:29:52 -05:00
Zev Benjamin
6fa0cb3b96
jabber_mirror: Use consistent casing for commandline arguments
...
(imported from commit e30aedc2f626d64b79a9b36b7f3a0fbee84a8ada)
2014-03-03 17:29:52 -05:00
Zev Benjamin
08e2639fa9
jabber_mirror: Remove dead code
...
(imported from commit a8802340e1a624934a92d5bdd4ba8ad26faaadbf)
2014-03-03 17:29:52 -05:00
Zev Benjamin
afea89d717
jabber_mirror: Fix anti-looping
...
(imported from commit 5b0ee18b3ec4fd73912fde83b14083e77940ab6e)
2014-03-03 17:29:52 -05:00
Zev Benjamin
f18525acd1
jabber_mirror: Do domain replacement more safely
...
(imported from commit 1a6a3d23120f06d54bc954d4e89d5fccf666332e)
2014-03-03 17:29:52 -05:00
Zev Benjamin
8d787f888f
jabber_mirror: Use str.replace instead of re.sub
...
(imported from commit 55798a06951366f0c3d246a243dbb3d41ee5b4f7)
2014-03-03 17:29:52 -05:00
Zev Benjamin
033e821963
jabber_mirror: Use consistent method name casing
...
(imported from commit 0f68b94bab992ba20aa7c185fa40eafeea22f92e)
2014-03-03 17:29:52 -05:00
Zev Benjamin
e7a1d3b0d7
jabber_mirror: Factor out jid_to_zulip and use str.rpartition
...
(imported from commit 435f076d7125676b5b964c73ec1e3753496c32af)
2014-03-03 17:29:52 -05:00
Zev Benjamin
36f8957b36
jabber_mirror: Make copyright date clearer
...
(imported from commit a97382d174994be0592fbd98cdef1ed39c1b0400)
2014-03-03 17:29:51 -05:00
Tim Abbott
26bc53d123
Add Jabber mirroring bot.
...
(imported from commit a539e1e9322bfbef4d93efce951f058d09fc58fe)
2014-03-03 17:29:51 -05:00
Jessica McKellar
5c4d22fe2c
nagios: give digest emails even more processing time before alerting.
...
(imported from commit 057511c22af39d147e4c4c499fee5a3fb7392786)
2014-02-18 16:07:31 -05:00
Jessica McKellar
a86dc0edae
nagios: give digest emails more processing time before alerting.
...
(imported from commit ed4c005bc8d0ab2d7ad3ec9e05e3f3110c9fd024)
2014-01-29 14:02:09 -05:00
Jessica McKellar
5e38e2f0a0
Don't alert on elevated mail queues during digest sends.
...
(imported from commit 2074b08c0f402c147bfdd1f0a4f0663081d5e55d)
2014-01-24 10:07:26 -05:00
Tim Abbott
775b9cc8bb
Don't send a Zulip notification about 0 lines.
...
(imported from commit cc8ce4d95978264cd05bc26f77a5d770abdf5add)
2014-01-16 18:36:19 -05:00
Tim Abbott
2aef11b064
Filter upstream timed out events from log2zulip.
...
(imported from commit 7a18d7f7ea6cc1be90d436c651eb4bb85598cec9)
2014-01-16 16:51:16 -05:00
Steve Howell
be6d71f13d
Add summarize_stream.py.
...
(imported from commit 061b1ccc6649acb9a9fc40370282fa34c645afed)
2014-01-10 21:39:06 -05:00
Tim Abbott
2dd1d1c1d1
[puppet] Add log2zulip tool for sending log files to Zulip.
...
This tool is a little crude; it runs out of a cron job and will
forward to staging a notice about any new lines in the declared log
files, truncating if there are more than 10 lines.
(imported from commit 6748ddff1def0907b061dc278a3a848bd2e933f1)
2013-12-17 11:02:55 -05:00
Zev Benjamin
5af50391b2
nagios: Reduce the threshold for nagios alerts about the size of rabbitmq queues
...
(imported from commit b3d999913caae5b36892be4ddeee1fdbc84e147b)
2013-12-11 15:10:29 -05:00
Waseem Daher
9faec9d778
Shorter topics for git/svn integration.
...
(imported from commit 6c9822f6ba383d885e48d3bb64c30e49ea8cf1e5)
2013-12-11 12:20:42 -05:00
Luke Faraone
c03ac5e3ce
Update style of client strings.
...
(imported from commit 1516461cf53b2715de68e01f16bb8a8cc33c48ad)
2013-12-09 11:47:52 -05:00
Tim Abbott
9b8555ba12
Deregister event queues when done in our Nagios scripts.
...
(imported from commit a1f73403163323e1dd9eda2f5269e94c60abdd1a)
2013-11-20 18:34:16 -05:00
Tim Abbott
3da6c41345
Use the new !avatar syntax in our git integration.
...
(imported from commit e00bc63f6fb1944ed206b3ede5431ac2b1ae1ac2)
2013-11-20 13:10:43 -05:00
Tim Abbott
8f75d55795
zephyr_mirror: Update maximum length of stream names when syncing.
...
(imported from commit 6ab7f5ae47c9dfe9edf411e73ac9e5ab22d375a7)
2013-11-12 09:38:43 -05:00
Tim Abbott
4cdec3c46e
Remove legacy check_output implementation for pre-2.7 Pythons.
...
We still need it in integrations, because those don't require Python
2.7, but we don't need it in any of our code that runs on internal
servers.
(imported from commit 3c340567f1a372dcb4206c6af9a6e5e18005b1b8)
2013-11-10 09:28:55 -05:00
Tim Abbott
efa5df1fac
Clean up some unused imports.
...
(imported from commit 0c5d8e2a55ba1b8909ba807fee3afe863dcdc226)
2013-11-04 11:51:17 -05:00
Tim Abbott
4a0758e058
Initial IRC mirror prototype.
...
(imported from commit fb1c482aaebc317b8b071346cb3bf54d4c7d2c8d)
2013-10-29 16:49:42 -04:00
Tim Abbott
8c62df2890
zmirror: Add some more non-world-readable Zephyr classes.
...
These are from a list that Camilla Fox sent me of all
non-world-readable Zephyr classes currently configured.
(imported from commit 6246a981402b47056b28cd14be688e15224aacd1)
2013-10-28 15:44:34 -04:00
Tim Abbott
6894453ab5
Use os.path directly rather than sometimes importing it separately.
...
(imported from commit 48486c4ea64d02a15faeebb0f490d31e9b113d62)
2013-10-28 15:44:13 -04:00
Tim Abbott
491d21302c
Move zulip_tools library to root of repository.
...
(imported from commit 2fada9d2acbcf81f8e2b3de8caadbf335141dfaa)
2013-10-28 10:54:48 -04:00
Luke Faraone
4279785695
[manual] Deconfigure standalone feedback bot, replacing it with a worker.
...
Steps needed:
- puppet apply on staging/prod when deployed to respective sites
- puppet apply on bots.z.n when deployed to prod
- copy /var/tmp/.feedback-bot-ticket-number from bots to staging
(imported from commit 2c943dac8d871809b0997a4484f508ec5b078bcd)
2013-10-25 14:13:30 -04:00
Luke Faraone
518da346e3
Enable absolute imports for non-third-party code where it was omitted previously
...
(imported from commit 34856ac32c6b94b614273a6fe46c87a314058d9b)
2013-10-25 14:13:30 -04:00
Zev Benjamin
3c455e48a9
Remove redundant return statement
...
(imported from commit eac3298f3004d2dd519c5444755e729111d13482)
2013-10-22 13:19:00 -04:00
Zev Benjamin
fab71363f4
zephyr_mirror: Make outgoing zephyrs to ctl instead go to golem
...
This makes zulips to ctl@mit.edu cause the mirroring system to zephyr
golem@mit.edu .
(imported from commit 9059a92ba51fa87e45feae2f0d5549b36b048e8b)
2013-10-17 23:20:57 -04:00
Zev Benjamin
134e96ad9b
zephyr_mirror: Hack to let golem receive mirrored personals
...
(imported from commit 68539e45dbdfd70a037405dd2760474bf46dff76)
2013-10-11 17:50:19 -04:00
Steve Howell
989ea5ffbc
Provide more info in support requests.
...
Have the Feedback Bot provide the sender's full name.
Put the email in the message to help searching.
Generate a ticket number to make it easier to refer to the message from
elsewhere.
(imported from commit 4d789135a0097bade50b4d980f49ca596d85b73b)
2013-10-11 11:45:46 -04:00
Luke Faraone
a283cae098
Store the feedback bot key in local_settings.py
...
(imported from commit 3322d8976328db61cd382acb06775c6a6df3fea0)
2013-10-10 11:31:15 -04:00
Tim Abbott
c2fb80c282
git integration: Linkify our commits to point to GitLab.
...
(imported from commit e8d3c107842680dec9bc6aa84f9548c0f879785d)
2013-10-08 17:21:57 -04:00
Tim Abbott
9f3766dd4a
Use events API in our Nagios monitoring scripts
...
(imported from commit 9b370e420095f17fbb7e9d1e466d51dd2e145de1)
2013-10-08 17:21:57 -04:00
Tim Abbott
540aaa74f2
Use the 'test: Zulip monitoring' client string for our Nagios stuff.
...
(imported from commit 02618a4724e1ab64c05f95f60b83b7593b3fe62b)
2013-10-08 08:57:30 -04:00
Tim Abbott
b749e2064e
[manual] puppet: Rename humbug user to zulip.
...
(imported from commit 90e517a4a657d2821b371c833e557c2003c9340c)
2013-10-08 08:57:30 -04:00
Tim Abbott
af2c21f84e
Rename humbug => zulip in tddium integration.
...
(imported from commit f48dd9f7ddc8221c90373300eedf87077d9e5874)
2013-10-08 08:57:30 -04:00
Tim Abbott
ba721d85cb
Some zulip => humbug updates in comments and print statements.
...
(imported from commit 9253569a1df7f96fda81ab162d710cdda03f30ca)
2013-10-08 08:57:29 -04:00
Tim Abbott
46a74271ea
[manual] Rename /home/humbug to /home/zulip.
...
This may require just doing an mv on the home directory, plus changing
the home directory in /etc/passwd. It should of course be done carefully.
(imported from commit 660997d897ee6d33563af74f0fc5d4267a911755)
2013-10-08 08:57:29 -04:00
Tim Abbott
7f8d48e4e0
[manual] Move git checkouts from /home/humbug/humbug to /home/humbug/zulip.
...
(imported from commit d58be28e57fcb3b5585c0018f1dbb53adf5067df)
2013-10-08 08:57:28 -04:00
Tim Abbott
b21b0557e8
zephyr_mirror: Fix support for forwarding mail zephyrs.
...
(imported from commit 4ab2c810d3ccff6058e6c0be2e172a78e216d0a5)
2013-10-01 14:52:20 -04:00
Tim Abbott
52e3d5bed5
Write zephyr mirroring logs to /var/log/zulip rather than ~/.
...
(imported from commit 7b76fa7834fb82fe3967f9e5ef963f26b7ff7184)
2013-09-25 16:52:41 -04:00