Commit Graph

102 Commits

Author SHA1 Message Date
Martin Zimmermann
93e783ed60 symlink share/isso.conf to isso/defaults.ini and include it properly 2016-01-09 00:15:04 +01:00
Martin Zimmermann
630e76f66c Merge branch 'legacy/0.9'
Conflicts:
	CHANGES.rst
	isso/ext/notifications.py
	isso/utils/http.py
	setup.py
2015-03-04 22:13:03 +01:00
Martin Zimmermann
c3c519ad0e add compatibility middleware for werkzeug 0.8, #170 2015-02-25 10:37:51 +01:00
Martin Zimmermann
d70eb160b9 Merge branch 'legacy/0.9'
Conflicts:
	isso/migrate.py
2014-12-25 21:53:31 +01:00
Martin Zimmermann
89d6ea076b add --empty-id flag to import weird Disqus exports, fixes #135 2014-11-25 22:59:05 +01:00
Martin Zimmermann
f7e51fd03d Merge branch 'legacy/0.9'
Conflicts:
	CHANGES.rst
	isso/core.py
	setup.py
2014-08-10 12:09:11 +02:00
Martin Zimmermann
0f1b95a125 add log to file option, closes #103 2014-08-10 10:55:25 +02:00
Martin Zimmermann
ce9781df51 Merge branch 'legacy/0.9'
Conflicts:
	CHANGES.rst
	isso/core.py
	isso/dispatch.py
	setup.py
2014-07-09 12:37:53 +02:00
Martin Zimmermann
35acf1e17e from __future__ import unicode_literals 2014-07-09 09:19:48 +02:00
Martin Zimmermann
221b782157 refactor configuration parsing
* use a single default configuration, share/isso.conf
* try to use config.new in some tests which are decoupled

A few tests now depend on `isso.dist` to show that they (or the used
objects) have too much dependencies and need to be rewritten.
2014-06-23 18:03:46 +02:00
Martin Zimmermann
9260e143f1 decouple hash generation from comment view and allow customization
Tests now use a dummy hash function that does nothing (basically) and
run a bit faster now.
2014-06-11 14:27:44 +02:00
Martin Zimmermann
d2644c3ba3 increase Copyright year 2014-05-29 14:16:31 +02:00
Martin Zimmermann
fd8465eb1c warn about incorrect notification backends, fix #95
SMTP is now also recognized as `smtp`backend. You may use multiple
notification backends (separated by comma). Defaults to `stdout`.
2014-05-27 12:18:40 +02:00
Martin Zimmermann
12f8af8434 add initial support to import WordPress comments 2014-04-30 18:57:17 +02:00
Martin Zimmermann
910da2a6c0 refactor disqus migration code into a class 2014-04-30 15:07:11 +02:00
Srijan Choudhary
cb0acc5ac0 Add a basic demo page 2014-04-24 01:22:30 +05:30
Martin Zimmermann
e393711859 use HTTP_REFERER as fallback if HTTP_ORIGIN is not sent
Also refactor those function a bit and move doctests into a separate
module.
2014-03-28 11:48:26 +01:00
Martin Zimmermann
e4ad81cde0 exit if no website(s) are configured and remove default host 2014-03-20 17:07:38 +01:00
Martin Zimmermann
0b816a0677 store session-key in database (once generated on db creation), #74
Store a random session key used to sign and verify comment ownership
once the database is initialized, not on every application startup.

Currently fixed session keys in [general] session-key are migrated into
the database on startup. The configuration parser will notice you about
the change and suggest you to remove this option.
2014-03-20 16:32:25 +01:00
Martin Zimmermann
c6e9c7eee4 Revert "run tests without depending on an already installed instance"
Breaks CLI (and probably other modules that use `dist.version`):

    [*]~/d/isso:master> isso -c sample.cfg run
    Traceback (most recent call last):
    File "/home/.../dev/isso/bin/isso", line 9, in <module>
        load_entry_point('isso==0.8.dev0', 'console_scripts', 'isso')()
    File "/home/.../dev/isso/isso/__init__.py", line 198, in main
        parser.add_argument('--version', action='version', version='%(prog)s ' + dist.version)
    AttributeError: 'module' object has no attribute 'version

This reverts commit 4e5e8c44f7.
2014-03-09 15:30:33 +01:00
eroen
4e5e8c44f7 run tests without depending on an already installed instance 2014-03-08 22:32:21 +01:00
Martin Zimmermann
ffd5882810 Merge branch 'fix-time-ago', closes #69 2014-03-06 12:05:05 +01:00
Martin Zimmermann
9a678e4691 an attempt to address #69
Add a global-like object that stores the delta from server time and
client time in a list and use the resulting average to "correct"
utils.ago diffs.
2014-03-06 11:44:33 +01:00
Martin Zimmermann
8540d45fae cumtime is only available in Python 2.7.4 or later 2014-03-06 11:32:25 +01:00
Martin Zimmermann
772730dbcd fix make_app logic 2014-03-06 11:05:22 +01:00
Martin Zimmermann
c4b80ff702 make CORS middleware more generic to use 2014-03-04 15:40:21 +01:00
Martin Zimmermann
d93d77c8c7 refactor markup and sanitization code
This commit introduces a new configuration section [markup] to refine
Misaka's Markdown extensions (by default strikethrough, superscript and
autolink).

Furthermore, you can set custom HTML elements/attributes that are
allowed, e.g. to enable images, set

  [markup]
  allowed-elements = img
  allowed-attributes = src

The refactorization separates HTML sanitization from Markdown -> HTML
and allows to include new markup languages such as BB Code or
reStructuredText.
2014-02-18 16:59:51 +01:00
Martin Zimmermann
65f260d0ba show session-key on application startup
Maybe useful to see that it really changes if unset. Also reduced key
size to 16 bytes form /dev/urandom (cosmetic reason, still enough).
2013-12-17 13:40:32 +01:00
Martin Zimmermann
fcd0a01de3 make_app uses threading.Lock now by default
Uses keyword arguments to use multiprocessing or uwsgi mixin. This
fixes an issue on exotic *BSDs such as NetBSD where Python comes not
with inter-process semaphores (issue 3307):

     mod_wsgi (pid=14365): Target WSGI script '/var/www/vhosts/my.hostname.org/htdocs/isso.wsgi' cannot be loaded as Python module.
     mod_wsgi (pid=14365): Exception occurred processing WSGI script '/var/www/vhosts/my.hostname.org/htdocs/isso.wsgi'.
     Traceback (most recent call last):
       File "/var/www/vhosts/my.hostname.org/htdocs/isso.wsgi", line 8, in <module>
         application = make_app(Config.load("/var/www/vhosts/my.hostname.org/htdocs/isso.cfg"))
       File "/usr/pkg/lib/python2.7/site-packages/isso/__init__.py", line 155, in make_app
         isso = App(conf)
       File "/usr/pkg/lib/python2.7/site-packages/isso/__init__.py", line 91, in __init__
         super(Isso, self).__init__(conf)
       File "/usr/pkg/lib/python2.7/site-packages/isso/core.py", line 223, in __init__
         self.lock = multiprocessing.Lock()
       File "/usr/pkg/lib/python2.7/multiprocessing/__init__.py", line 175, in Lock
         from multiprocessing.synchronize import Lock
       File "/usr/pkg/lib/python2.7/multiprocessing/synchronize.py", line 59, in <module>
         " function, see issue 3770.")
     ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.
2013-12-16 15:40:18 +01:00
Martin Zimmermann
adc722359d move application export to isso.run
When using Gunicorn or uWSGI to run `isso.dispatch` it would
automatically initialize and a default Isso instance (and cause
several logging messages), although never used.

If you use uWSGI or Gunicorn, you have to change the module from
`isso` to `isso.run`.
2013-12-08 19:15:08 +01:00
Martin Zimmermann
6e31111554 add application object into ns only when using uwsgi and gunicorn 2013-11-29 14:22:21 +01:00
Martin Zimmermann
baabd30e74 more descriptive logging 2013-11-29 14:21:43 +01:00
Martin Zimmermann
896b4f5e33 support for gunicorn (and other pre-forking wsgi servers) 2013-11-25 13:51:11 +01:00
Martin Zimmermann
6405f258f3 replace nested middleware calls with reduce and partials 2013-11-25 13:38:51 +01:00
Martin Zimmermann
8dac5375b6 add /info view for debugging purposes 2013-11-21 11:09:33 +01:00
Martin Zimmermann
b9158a660c move SocketHTTPServer to isso/wsgi.py 2013-11-17 11:57:41 +01:00
Martin Zimmermann
dfed955f23 Merge branch 'feature/migration' 2013-11-11 12:10:42 +01:00
Martin Zimmermann
6e85c54a2e refactor views and introduce an API for notifications
Keep Isso modular, not monolithic. Make it easy to integrate a
web interface or add XMPP notifications.

This refactorization includes minor bugfixes and changes:

* CORS middleware did not work properly due to wrong unit tests
* more type checks on JSON input
* new detection for origin and public url, closes #28
* new activation and delete url (no redirect for old urls, but you can
  convert the old urls: copy hash after `/activate/` (or delete) and
  open `/id/<id of comment>/activate/<hash>`
* move crypto.py to utils/

With this commit, SMTP is no longer automatically configured: add
`notify = smtp` to the `[general]` section to use SMTP.
2013-11-11 12:09:19 +01:00
Martin Zimmermann
5ca3137ddd add --dry-run option to import command 2013-11-11 11:57:31 +01:00
Martin Zimmermann
a442b8e0ee remove dead code 2013-11-08 19:03:08 +01:00
Martin Zimmermann
1174259b27 mv comment -> comments 2013-11-08 18:55:02 +01:00
Martin Zimmermann
ac8d987392 don't monkeypatch if uwsgi is available 2013-11-06 18:10:09 +01:00
Martin Zimmermann
4bb6e91f61 Isso can now listen on unix domain sockets, closes #25
This also changes the server configuration from `host` and `port`
to `listen = http://localhost:8080`.
2013-11-06 16:55:14 +01:00
Martin Zimmermann
6374d8a9e1 fix application profiling 2013-11-05 23:36:52 +01:00
Martin Zimmermann
af6695e935 lowercase MiddleWare and fix TypeError in Headers 2013-11-05 14:03:46 +01:00
Martin Zimmermann
6126f0ec6f add CORS middleware to add CORS header to *all* requests 2013-11-05 01:11:28 +01:00
Martin Zimmermann
d59fc2ef8e handle OPTIONS request and return CORS headers 2013-11-03 15:18:04 +01:00
Martin Zimmermann
0473afe2db add profiling option to server configuration 2013-11-03 12:32:38 +01:00
Martin Zimmermann
74ab58167e replace abort(code) with proper exceptions and refactor request dispatch 2013-11-01 12:46:51 +01:00
Martin Zimmermann
2794734258 remove Jinja2 dependency 2013-11-01 12:26:39 +01:00