a Disqus alternative

Overview

Isso – a commenting server similar to Disqus

Isso – Ich schrei sonst – is a lightweight commenting server written in Python and JavaScript. It aims to be a drop-in replacement for Disqus.

Isso in Action

See posativ.org/isso for more details.

Comments
  • Email Notification Customization

    Email Notification Customization

    The Status Of the PR

    The PR is now closed due to a lot of messes.

    I'll create separate PRs in the future about this PR.

    If you wanna try the feature in this PR to help me with my future PRs, you can try the notification branch, which will serve as an upstream for the newly added mail module.

    PR separation (will do the next one once the current one is merged):

    • [x] PR 1: Email subject customization.
    • [ ] PR 2: Add lang option and the translation about the term Anonymous from isso/js/app/i18n/
    • [ ] PR 3: Add format option and translation templates for mail.
    • [ ] PR 4: Add support for html format in email.
    • [ ] PR 5: Add support for multipart format in email.
    • [ ] PR 6: Add template option for mail template path customization.

    Mail Format Choose

    Available options: plain, html, multipart. Default set to plain, so you don't need to config this in the mail block of the isso server conf if you mean to use plain text:

    [mail]
    ...
    format = plain
    

    To use multipart, set the option to multipart in the mail block of the isso server conf:

    [mail]
    ...
    format = multipart
    

    To use html, set the option to html in the mail block of the isso server conf:

    [mail]
    ...
    format = html
    

    Title Customization

    To customize the mail title, set like the following options in the mail block of the isso server conf:

    [mail]
    ...
    subject_admin = {replier} commented on {title}
    subject_user_new_comment = {receiver}, {replier} replied {repliee}'s comments on {title}
    subject_user_reply = {replier} replied to your comments on {title}
    

    IN the example, subject_user is set to two values, then the first one will be used when {repliee}'s comment is not the {receiver}'s original one, the second one will be used otherwise. subject_user can be set to a value, then the value will be used all the time in the reply notification.

    Result:

    Mail Language

    [mail]
    ...
    language = en
    

    https://github.com/posativ/isso/pull/518#issuecomment-450546330

    Mail Customization

    All three formats support customization, it helps to read the dafault configuration for details (isso/templates/comment.html for format = html, isso/templates/comment.plain for format = plain).

    To use the feature, set the following options like this in the mail block of the isso server conf:

    [mail]
    ...
    template = /the/path/to/the/directory/or/a-single-template
    

    If you set it to the path to a directory, for format = html it will check if admin.html and user.html in that directory are available. (For format = plain it will check admin.plain and user.plain; For format = multipart, it will check admin.html and user.html for html part, admin.plain and user.plain for plain part) The name of the file should be self-explaining. user.html and user.plain are used for reply notifications to the subcribed users, admin.html and admin.plain are used for mail notifications to the admin.
    If one of these is missing then in the corresponding case the template will fall back to the default. The log will tell you what happened when the error occurs. The template will be rendered by Jinja2.

    Alternatively, you could just directly edit the default mail template without setting the option template.

    Default template path for format = plain (Different if you set a different mail language using the option language):
    When mail language is not set using language or set via language = en: isso/templates/comment.plain When it's set any other language than en using language, take language = ja for example: isso/templates/comment_ja.plain

    Default template path for format = html (Different if you set a different mail language using the option language):
    When mail language is not set using language or set via language = en: isso/templates/comment.html When it's set any other language than en using language, take language = ja for example: isso/templates/comment_ja.html

    Default template path for format = multipart:
    html part: the same as Default template path for format = html (listed above) plain part: the same as Default template path for format = plain (listed above)

    Templating Examples: https://github.com/posativ/isso/pull/518#issuecomment-450542453

    HTML Styling suggestion: Using inline css as much as u can, cause webmail service like gmail will block any kind of css on the web other than the inline css. In imap <style> tag works in mail. Don't leave out the <html> out as this will add to spam score to your mail.

    Format choose suggestion: Don't use format = html, the mail will have a higher spam score for having only html part. If you wanna use html, use format = multipart instead.

    Plain Text Customization Suggestion: remember to tidy your text and remove every unnecessary spaces besides the comment you want (things like {#...#} won't be rendered), 'cause they will be rendered into the final mail.

    Fallback Template: https://github.com/posativ/isso/pull/518#issuecomment-450537644

    opened by SnorlaxYum 59
  • Reply notification

    Reply notification

    Hi,

    I love Isso, but the only thing that prevent me to drop Disqus for Isso is the ability for commenters to receive an email notification of reply.

    I get a working version with this feature (I use it in production on my blog: http://thomassileo.com), it still need some improvement, I just open the pull request to open the discussion.

    What do you think about this feature ?

    I added a field in the comment table, is this something that will prevent you to merge this feature ?

    Let me know what you think about this,

    Thanks!

    opened by tsileo 36
  • Documentation incomplete

    Documentation incomplete

    I just set up isso for my blog and ran into an issue with the documentation.

    You mention embedding embed.min.js into the website, but you never once mention where it's from.

    Since I already new about the Embed.js library I got the code from that library and called that up.

    Lo and behold, nothing happened.

    Luckily I found a blog (in french) which mentioned copying js files from isso/lib/python2.7/site-packages/isso/js into Apache's directories led me onto the straight path.

    I therefore believe that it is necessary to include this into the documentation. I can probably produce a Pull Request, if it would help, even though I haven't worked with Sphinx before.

    opened by MyrionPhoenixmoon 32
  • [uberspace] Comments gone after reload

    [uberspace] Comments gone after reload

    I'm running isso 0.10.6 installed via pip on uberspace7 and added it (embed.min.js) to my Pelican driven blog. When loading the page, I can see the form and also the text that there is no comment yet, but when I try to submit a comment, I get a 403 on the POST request.

    The request was

    Accept: / Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.5 Connection: keep-alive Content-Length: 180 Content-Type: application/json Cookie: 4=WzQsIjg0MDQ1NGQwNDFlNjUyMmQ2NTE2NzNmNTdlNDlmOTQ2N2ZkYzdlYTgiXQ.DaZoLw.YCChMYMt4mQPoCNrY2MPndQ1sBQ; 5=WzUsIjUyMjVhZWJkMmI4YzQyZDBhYmY5ZjAzN2I5NTI5M2NkZmQ4MTM4YWYiXQ.DaZoOw.Rl2ZxtdGnsbksZWaDpC1rdi0HAY; 6=WzYsIjhjYTE4N2QzYjRhOGU0ZGRiOWQzMjBiMTE1YjkyYjRlOGUxYThmOWMiXQ.DaZpZw.mN6xd0BMG8NehUY6t2txP05kC5M DNT: 1 Host: isso.mydomain.de Origin: https://mydomain.de Referer: https://mydomain.de/ User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:59.0) Gecko/20100101 Firefox/59.0

    and the response is

    HTTP/2.0 403 Forbidden access-control-allow-credentials: true access-control-allow-headers: Origin, Referer, Content-Type access-control-allow-methods: HEAD, GET, POST, PUT, DELETE access-control-allow-origin: https://mydomain.de access-control-expose-headers: X-Set-Cookie, Date content-length: 153 content-type: text/html; charset=UTF-8 date: Wed, 04 Apr 2018 13:57:09 GMT referrer-policy: strict-origin-when-cross-origin server: nginx strict-transport-security: max-age=172800 x-content-type-options: nosniff X-Firefox-Spdy: h2 x-frame-options: SAMEORIGIN x-xss-protection: 1; mode=block

    Did I miss something in the docs? Do I need to adjust some file access? Any help appreciated.

    support docs 
    opened by p-vitt 27
  • Cannot send comments

    Cannot send comments

    Hello there!

    I have an issue. I have followed the Quickguide instructions, and added Isso to my website, but I cannot send comments.

    I am running isso in /opt/isso. The nginx is in /etc/nginx. These are my configuration files:

    isso.cfg here. nginx.conf here. (here is the javascript code, in case it might be of help. Nothing special there. Just copy pasted from another site))

    My html code is:

    <!-- comments enabled (isso) --> 
    <div class="comments">
        <h2 class="isso-title">Comments</h2>   
        <script type="text/javascript" 
            data-title="Comments"
            data-isso="//comments.127.0.0.1:4000/"
            data-isso-css="true"
            data-isso-lang="en"
            data-isso-reply-to-self="false"
            data-isso-require-author="false"
            data-isso-require-email="false"
            data-isso-max-comments-top="10"
            data-isso-max-comments-nested="5"
            data-isso-reveal-on-click="5"
            data-isso-avatar="true"
            data-isso-avatar-bg="#f0f0f0"
            data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 #2069b6 #486910 #e4bf80 #0f0f0f"
            data-isso-vote="true"
            data-vote-levels="[-5,5,15]"        
            src="https://cdnjs.cloudflare.com/ajax/libs/embed-js/4.2.2/embed.min.js"></script>    
        <section id="isso-thread"></section>
    
    </div> 
    

    The comment's box does appear on my website, but when I click submit, nothing happens.

    This is what I do to run my site (locally):

    • create my site locally: bundle exec jekyll serve (using jekyll). This gives me a server address at http://127.0.0.1:4000/
    • enable virtual environment: source /opt/isso/bin/activate
    • run isso: isso -c /opt/isso/isso.cfg run. This gives me the message: connected to http://127.0.0.1:4000/

    Then, I go to a particular subdomain in my website (http://127.0.0.1:4000/blog/2017/097/hello/), and try to submit a comment, but nothing happens.

    What is the issue? Am I actually running the proxy with nginx? Notice that my site is a blog and the comment box appears on every page. Is that ok?

    opened by luisvalenzuelar 26
  • Have client read out shared settings from server

    Have client read out shared settings from server

    Some settings (reply-to-self and require-email) always need to be set to the same value on server and client side for correct operation. This change removes the need for such redundant information by having the client read out those settings from the server.

    According to the docs this should be true for require-author as well, but that settings doesn't seem to be implemented.

    server client feature 
    opened by pellenilsson 21
  • [support] What are the SMTP values for Exim4?

    [support] What are the SMTP values for Exim4?

    I have this

    # Isso can notify you on new comments via SMTP. In the
    # email notification, you also can moderate comments. If
    # the server connection fails during startup, a null
    # mailer is used.
    [smtp]
    
    # self-explanatory, optional
    username =
    
    # self-explanatory (yes, plain text, create a dedicated
    # account for notifications), optional.
    password =
    
    # SMTP server
    host = localhost
    
    # SMTP port
    port = 587
    #465
    
    # use a secure connection to the server, possible values: "none", "starttls"
    # or "ssl". Python 2.X probably does not validate certificates (needs
    # research). But you should use a dedicated email account anyways.
    security = none
    #starttls
    #ssl
    
    # recipient address, e.g. your email address
    to = [email protected]
    
    # sender address, e.g. [email protected]
    #from = [email protected]
    

    in isso.conf but SMTP sending emails does not work. I use Exim4. What is wrong?

    opened by ghost 21
  • Isso isn't showing up on my blog anymore

    Isso isn't showing up on my blog anymore

    The service appears to be running, but it appears Isso decided to quit.

    $ sudo systemctl status isso

    sudo systemctl status isso
    ● isso.service - Isso Commenting Server
       Loaded: loaded (/etc/systemd/system/isso.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2020-08-20 04:02:55 UTC; 3ms ago
     Main PID: 1801 (systemd)
        Tasks: 0 (limit: 4915)
       CGroup: /system.slice/iss
    

    My config:

    [general]
    dbpath = /var/lib/isso/comments.db
    host = https://domain/
    max-age = 15m
    notify = smtp
    log-file = /var/log/isso.log
    
    [moderation]
    enabled = false
    
    [server]
    listen = http://localhost:1943
    reload = off
    profile = off
    
    [guard]
    enabled = true
    ratelimit = 2
    direct-reply = 3
    reply-to-self = false
    require-author = false
    require-email = false
    
    Aug 20 04:11:49 cbtree isso[2010]: Traceback (most recent call last):
    Aug 20 04:11:49 cbtree isso[2010]:   File "/home/isso/.local/bin/isso", line 7, in <module>
    Aug 20 04:11:49 cbtree isso[2010]:     from isso import main
    Aug 20 04:11:49 cbtree isso[2010]:   File "/home/isso/.local/lib/python3.6/site-packages/isso/__init__.py", line 60
    Aug 20 04:11:49 cbtree isso[2010]:     from werkzeug.wsgi import SharedDataMiddleware
    Aug 20 04:11:49 cbtree isso[2010]: ImportError: cannot import name 'SharedDataMiddleware'
    Aug 20 04:11:49 cbtree systemd[1]: isso.service: Main process exited, code=exited, status=1/FAILURE
    Aug 20 04:11:49 cbtree systemd[1]: isso.service: Failed with result 'exit-code'.
    Aug 20 04:11:49 cbtree sudo[2012]: cranberrypie : TTY=pts/0 ; PWD=/home/cranberrypie ; USER=root ; COMMAND=/bin/journalct
    Aug 20 04:11:49 cbtree sudo[2012]: pam_unix(sudo:session): session opened for user root by cranberrypie(uid=0)
    
    question 
    opened by CranberryPie1 20
  • [support] Isso does not work!?

    [support] Isso does not work!?

    Hi,

    I followed your quickstart guide but it seems that isso does not work. You could check it here.

    My nginx config is:

    server {
        listen 80;
        server_name comments.somenxavier.xyz;
    
        location / {
            proxy_pass http://localhost:8000;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

    My isso config is:

    [general]
    dbpath = /var/isso/comments.db
    host = http://somenxavier.xyz/
    name = hola
    [server]
    listen = http://localhost:8080/
    

    What is wrong?

    Thanks in advance,

    opened by ghost 19
  • Isso doesn't want to start

    Isso doesn't want to start

    I can't figure out what's exactly wrong. Also, how do I see the Isso version?

    isso@vm-150:~$ sudo systemctl status isso

    isso.service - Isso Commenting Server
      Loaded: loaded (/etc/systemd/system/isso.service; enabled; vendor preset: enab
      Active: activating (auto-restart) (Result: exit-code) since Tue 2020-03-24 19:
     Process: 9223 ExecStart=/home/isso/.local/bin/isso -c /home/isso/isso.conf (cod
    Main PID: 9223 (code=exited, status=2)
    
    Mar 24 19:13:12 vm-150 systemd[1]: isso.service: Unit entered failed state.
    Mar 24 19:13:12 vm-150 systemd[1]: isso.service: Failed with result 'exit-code'
    lines 1-8/8 (END)
    
    support question needs-more-info 
    opened by inputuserhere 17
  • Document how to switch from prebuilt package to from-source

    Document how to switch from prebuilt package to from-source

    Hi! I see tons of useful features merged in the repo, but no new releases.

    To be able to benefit from those new features, it would be great to have some documentation about how to switch from a running isso installed with pip install isso to the version at GitHub.

    Would it be something like cd into the isso folder, delete the content, do git clone, and then pip install .? Using virtualenv, right? Is there a way to go back? (probably backup the database and the folder first?). Are there new required/important config settings?

    Thank you :)

    docs 
    opened by hamoid 17
  • Ability to block specific commenters

    Ability to block specific commenters

    Checklist

    • [x] I am running the latest version. Installing Isso from GitHub from the master branch does not fix my issue
    • [x] I have checked the troubleshooting guide
    • [x] I have searched the open issues, but my issue has not already been reported

    What is not working?

    I have a couple of extremely persistent spammers who have not yet realized that I moderate all my comments. It would be nice if I could make comments from specific email addresses or matching specific URL patterns just go into a black hole so that I don't have to see them ever again.

    How can one reproduce this issue?

    1. Have good enough SEO
    opened by fluffy-critter 0
  • Missing comments (but count is correct!)

    Missing comments (but count is correct!)

    Checklist

    • [ ] I am running the latest version. Installing Isso from GitHub from the master branch does not fix my issue
    • [x] I have checked the troubleshooting guide
    • [x] I have searched the open issues, but my issue has not already been reported

    What is not working?

    Not all comments are loaded. The comment count on the top of the page is always correct, but at the bottom of the article not all comments are shown. I noticed that sometimes switching from http to https in the URL bar of the browser helps, but not always. See for example:

    • http://www.mardy.it/blog/2022/12/leaving-canonical-again.html
    • https://www.mardy.it/blog/2022/12/leaving-canonical-again.html

    I haven't been able to figure out a reproducible pattern.

    I'm running isso 0.13.0 as fcgi, and this is my host stanza from the config file:

    ; your website or blog (not the location of Isso!)
    host =
      http://www.mardy.it/
      https://www.mardy.it/
      http://mardy.it/
      https://mardy.it/
      http://blog.mardy.it/
      https://blog.mardy.it/
    

    I had the same issue with isso 0.12.x, so it's not a regression.

    opened by mardy 2
  • Markdown extensions to support Math, Tables, etc. not working

    Markdown extensions to support Math, Tables, etc. not working

    Checklist

    • [x] I am running the latest version. Installing Isso from GitHub from the master branch does not fix my issue
    • [x] I have checked the troubleshooting guide
    • [x] I have searched the open issues, but my issue has not already been reported

    What is not working?

    The documentation here makes note of a number of extensions that can be added to the default Markdown editor, such as "math", "footnotes", "highlight", "tables" etc. However, even after adding them to the configuration, there does not seem to be any change, and no errors in the logs either.

    How can one reproduce this issue?

    Isso configuration file contains the following [markup] section:

    [markup]
    options = autolink, fenced-code, no-intra-emphasis, strikethrough, superscript, math, highlight, tables, underline
    flags = hard-wrap
    allowed-elements =
    allowed-attributes =
    

    The "default" ones -- "autolink, fenced-code, no-intra-emphasis, strikethrough, superscript" work correctly and as expected, adding and removing them from the line produces the expected results. However, "math, highlight, tables, underline" produce no effect whatsoever. A demo can be seen on this page, the last comment: https://mihnea.net/hello-world/#isso-11

    Is there something I'm missing from the installation? The Misaka library appears to be present under isso/lib/python3.9/site-packages/misaka and is at version 2.1.1.

    needs-contributor bug 
    opened by mgc8 0
  • Use UTF8 as encoding to open config files

    Use UTF8 as encoding to open config files

    Checklist

    • [ ] All new and existing tests are passing
    • [ ] (If adding features:) I have added tests to cover my changes
    • [ ] (If docs changes needed:) I have updated the documentation accordingly.
    • [ ] I have added an entry to CHANGES.rst because this is a user-facing change or an important bugfix
    • [ ] I have written proper commit message(s)

    What changes does this Pull Request introduce?

    Set encoding=UTF-8 in open methods used in config module to load configuration files.

    Why is this necessary?

    I've been facing UnicodeDecodeError issues using Apache2 + mod_wsgi + Isso.

    I've found 2 solutions:

    • hack config.py to set encoding="utf8" in io.open calls
    • Add lang='en_US.UTF-8' and locale='en_US.UTF-8' to the WSGIDaemonProcess in the Apache vhost config. See this blog post from Graham (maintainer of the mod_wsgi)

    I'm using this second option but still, I think this is a small reliability improvment for Isso to explicitly use UTF8 to read configuration files.

    Files used

    isso_wsgi.py:

    import site  # noqa: E402
    
    site.addsitedir("{{ comments_path }}.venv")
    
    from pathlib import Path  # noqa: E402
    
    # 3rd party
    from isso import config, make_app  # noqa: E402
    
    # globals
    isso_conf_file = Path(__file__).parent / "isso-prod.cfg"
    
    application = make_app(
        config.load(
            config.default_file(),
            str(isso_conf_file.resolve())
        ),
        multiprocessing=True,
        threading=True,
    )
    

    tail /var/log/apache2/geotribu_comments_error.log -n 25:

    [Thu Nov 03 17:39:15.240427 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]   File "/var/www/geotribu/comments/isso_wsgi.py", line 20, in <module>
    [Thu Nov 03 17:39:15.240429 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]     config.load(
    [Thu Nov 03 17:39:15.240433 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]   File "/var/www/geotribu/comments/.venv/lib/python3.10/site-packages/isso/config.py", line 153, in load
    [Thu Nov 03 17:39:15.240435 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]     parser.read_file(f)
    [Thu Nov 03 17:39:15.240439 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]   File "/usr/lib/python3.10/configparser.py", line 719, in read_file
    [Thu Nov 03 17:39:15.240441 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]     self._read(f, source)
    [Thu Nov 03 17:39:15.240444 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]   File "/usr/lib/python3.10/configparser.py", line 1021, in _read
    [Thu Nov 03 17:39:15.240446 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]     for lineno, line in enumerate(fp, start=1):
    [Thu Nov 03 17:39:15.240450 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]   File "/usr/lib/python3.10/encodings/ascii.py", line 26, in decode
    [Thu Nov 03 17:39:15.240452 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462]     return codecs.ascii_decode(input, self.errors)[0]
    [Thu Nov 03 17:39:15.240460 2022] [wsgi:error] [pid 2047229:tid 139679207601728] [remote 86.229.66.142:45462] UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 210: ordinal not in range(128)
    [Thu Nov 03 17:47:27.489385 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850] mod_wsgi (pid=2052433): Failed to exec Python script file '/var/www/geotribu/comments/isso_wsgi.py'.
    [Thu Nov 03 17:47:27.489485 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850] mod_wsgi (pid=2052433): Exception occurred processing WSGI script '/var/www/geotribu/comments/isso_wsgi.py'.
    [Thu Nov 03 17:47:27.489931 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850] Traceback (most recent call last):
    [Thu Nov 03 17:47:27.489961 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]   File "/var/www/geotribu/comments/isso_wsgi.py", line 20, in <module>
    [Thu Nov 03 17:47:27.489964 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]     config.load(
    [Thu Nov 03 17:47:27.489968 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]   File "/var/www/geotribu/comments/.venv/lib/python3.10/site-packages/isso/config.py", line 153, in load
    [Thu Nov 03 17:47:27.489971 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]     parser.read_file(f)
    [Thu Nov 03 17:47:27.489974 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]   File "/usr/lib/python3.10/configparser.py", line 719, in read_file
    [Thu Nov 03 17:47:27.489977 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]     self._read(f, source)
    [Thu Nov 03 17:47:27.489991 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]   File "/usr/lib/python3.10/configparser.py", line 1021, in _read
    [Thu Nov 03 17:47:27.489994 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]     for lineno, line in enumerate(fp, start=1):
    [Thu Nov 03 17:47:27.489997 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]   File "/usr/lib/python3.10/encodings/ascii.py", line 26, in decode
    [Thu Nov 03 17:47:27.490000 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850]     return codecs.ascii_decode(input, self.errors)[0]
    [Thu Nov 03 17:47:27.490011 2022] [wsgi:error] [pid 2052433:tid 139659067721280] [remote 86.229.66.142:53850] UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 210: ordinal not in range(128)
    
    opened by Guts 2
  • Issue with custom CA certificates (was: Posting comments doesn't work with '404 not found')

    Issue with custom CA certificates (was: Posting comments doesn't work with '404 not found')

    Checklist

    • [ ] I am running the latest version. Installing Isso from GitHub from the master branch does not fix my issue — I am using the latest docker image: ghcr.io/isso-comments/isso:0.13.0
    • [x] I have checked the troubleshooting guide
    • [x] I have searched the open issues, but my issue has not already been reported

    What is not working?

    I have ISSO showing imported comments, but posting comments doesn't work.

    When I try to post a comment, a POST is sent to https://comments.domain.tld/new?uri=%2F2019%2F12%2Fblog-title-slug%2F and ISSO returns 404:

    <!doctype html>
    <html lang=en>
    <title>404 Not Found</title>
    <h1>Not Found</h1>
    <p>URI does not exist %s</p>
    

    How can one reproduce this issue?

    Here is my isso.cfg:

    [general]
    name = domain
    host =
      http://blog.domain.tld/
      https://blog.domain.tld/
    dbpath = /config/comments.db
    gravatar = true
    
    [guard]
    enabled = true
    ratelimit = 2
    

    Here is my nginx config for comments.domain.tld:

    server {
      server_name comments.domain.tld;
      listen 443 ssl;
      listen 80;
      ssl_certificate /etc/letsencrypt/live/comments.domain.tld/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/comments.domain.tld/privkey.pem;
      location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://isso:8081;
      }
    }
    

    Here is the HTML that's used to load the comments on the page:

                  <script data-isso="//comments.domain.tld/"
                          data-isso-vote="false"
                          src="//comments.domain.tld/js/embed.min.js"></script>
                  <section id="isso-thread">
                      <noscript>Javascript needs to be activated to view comments.</noscript>
                  </section>
    

    ISSO is being run using the docker image ghcr.io/isso-comments/isso:0.13.0, with the default command which I believe is this (only modified the port):

    /isso/bin/gunicorn -b 0.0.0.0:8081 -w 4 --preload isso.run --worker-tmp-dir /dev/shm
    
    needs-contributor bug docs 
    opened by taoeffect 4
  • docs: data-isso param for sub-uri setup (was: 'Isso doesn't work with Sub-URI multi-site / multiple website setup')

    docs: data-isso param for sub-uri setup (was: 'Isso doesn't work with Sub-URI multi-site / multiple website setup')

    Checklist

    • [x] I am running the latest version. Installing Isso from GitHub from the master branch does not fix my issue
    • [x] I have checked the troubleshooting guide
    • [x] I have searched the open issues, but my issue has not already been reported

    What is not working?

    EDIT: I've figured out what the problem is! Even though I've solved it, I've modified the issue title to indicate that this is (I believe) something that should be more clearly documented and explained. See my followup comment below this post.

    According to this documentation it is possible to setup ISSO so that everything gets routed through a /isso/ path: https://isso-comments.de/docs/reference/multi-site-sub-uri/#sub-uri

    This doesn't work.

    ISSO will still make multiple requests to the root domain that do not follow this path, and the documentation isn't clear on how to fix this.

    For example, ISSO will try to connect to /?uri=..., /new?uri=..., /config, /css/isso.css, and possibly other paths.

    This makes it impossible to run ISSO on the same website as the blog.

    How can one reproduce this issue?

    My nginx setup looks something like this:

    server {
      server_name blog.domain.tld ;
      root /var/www/blog.domain.tld;
      listen 443 ssl;
      listen 80;
      ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.pem;
      location / {
        try_files $uri $uri/;
        add_header Cache-Control "private, max-age=0, no-cache";
      }
      location /isso {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Script-Name /isso;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://isso:8081;
      }
    }
    

    My isso.cfg looks something like this:

    [general]
    name = isso
    host = http://blog.domain.tld/
    dbpath = /config/comments.db
    gravatar = true
    
    [guard]
    enabled = true
    ratelimit = 2
    

    My docker-compose.yml has a service that looks something like this:

      isso:
        # https://github.com/isso-comments/placeholder/blob/master/Dockerfile
        image: ghcr.io/isso-comments/isso:0.13.0
        command: ${ISSO_CMD:-/isso/bin/gunicorn -b 0.0.0.0:8081 -w 4 --preload isso.run --worker-tmp-dir /dev/shm}
        depends_on:
          - logs
        logging:
          driver: fluentd
          options:
            tag: "{{.Name}}.log"
        expose:
          - "8081"
        extra_hosts:
          - "blog.domain.tld:192.168.1.17"
        volumes: # save config to vol/isso/isso.cfg
          - ./vol/isso:/config
          - ./cache/localtime:/etc/localtime:ro
    

    For local development, I've also added an alias in /etc/hosts on the host machine for blog.domain.tld that points to 127.0.0.1 and have added a similar entry to the docker container via extra_hosts.

    docs 
    opened by taoeffect 2
Releases(0.13.0)
  • 0.13.0(Jun 12, 2022)

    Full release notes: News

    What's Changed

    • CHANGES.rst: Fix small typos by @fliiiix in https://github.com/posativ/isso/pull/809
    • [apidoc] Bugfix/api docs by @fliiiix in https://github.com/posativ/isso/pull/810
    • [MAJOR] js: Move to webpack, pug from r.js, jade by @ix5 in https://github.com/posativ/isso/pull/800
    • init.py: Fix config startup check by @fliiiix in https://github.com/posativ/isso/pull/811
    • GitHub Actions: Optimize actions, cache, upload artifacts by @ix5 in https://github.com/posativ/isso/pull/819
    • isso: js: embed: Insert Postbox before comments by @ix5 in https://github.com/posativ/isso/pull/820
    • docs: Check in rendered SCSS by @ix5 in https://github.com/posativ/isso/pull/823
    • [bin], [docs] Remove transifex helpers, references by @ix5 in https://github.com/posativ/isso/pull/824
    • treewide: Remove manpage generation by @ix5 in https://github.com/posativ/isso/pull/825
    • contrib: import_blogger: Warn on missing feedparser, run flake8 in contrib/ as well by @ix5 in https://github.com/posativ/isso/pull/818
    • docs, demo:
    • isso: js: Replace pug templates with plain js by @ix5 in https://github.com/posativ/isso/pull/822
    • js: Add Jest testing by @ix5 in https://github.com/posativ/isso/pull/801
    • .github: Add Javascript action by @ix5 in https://github.com/posativ/isso/pull/826
    • docs: update list of alternatives by @davidak in https://github.com/posativ/isso/pull/828
    • setup.py: drop python3.5 support by @fliiiix in https://github.com/posativ/isso/pull/808
    • [docs] Add "Edit on GH" links, fix searchbox, widen viewport, better legibility by @ix5 in https://github.com/posativ/isso/pull/833
    • [config] Use only .cfg extension, unify getting conf location by @ix5 in https://github.com/posativ/isso/pull/827
    • [client] js: Limit syntax back to ES5, emit ES5-compatible output by @ix5 in https://github.com/posativ/isso/pull/834
    • Removes reference to unmaintained yaourt by @Fryboyter in https://github.com/posativ/isso/pull/835
    • css, js: Prefix all directives with 'isso-' by @ix5 in https://github.com/posativ/isso/pull/816
    • Bugfix/gravatar display avatar size by @fliiiix in https://github.com/posativ/isso/pull/831
    • js: isso: Fix class selector for preview by @ix5 in https://github.com/posativ/isso/pull/840
    • Dockerfile: Use Alpine base images, optimize process by @ix5 in https://github.com/posativ/isso/pull/841
    • Add puppeteer end-to-end integration test by @ix5 in https://github.com/posativ/isso/pull/807
    • [ci] [docker] Use docker for e2e, client testing, add docker-compose file by @ix5 in https://github.com/posativ/isso/pull/847
    • [docs] Improve apiDoc handling, add entry to Makefile, flourish by @ix5 in https://github.com/posativ/isso/pull/849
    • Remove ansible, Vagrant cruft, move remaining to contrib/ dir by @ix5 in https://github.com/posativ/isso/pull/850
    • [docs] [MAJOR] Re-arrange, add a few missing pages to be filled in by @ix5 in https://github.com/posativ/isso/pull/848
    • docs: theme: Rework sidebar internals, fix search, error-on-warn, minor fixes by @ix5 in https://github.com/posativ/isso/pull/851
    • docs [MAJOR]: Fill in community, testing, contrib pages, add news entries by @ix5 in https://github.com/posativ/isso/pull/852
    • docs: contrib: More links, explain building the docs, syntax by @ix5 in https://github.com/posativ/isso/pull/853
    • docs: Expand community & Writing docs pages, import wiki articles by @ix5 in https://github.com/posativ/isso/pull/860
    • docs: Document snapshots, add "New in version x", def.-list styling, better config options documentation by @ix5 in https://github.com/posativ/isso/pull/862
    • [docs] Reduce width; code highlighting changes, installation guide improvements, prompt blocks by @ix5 in https://github.com/posativ/isso/pull/863
    • [server] isso/init: Log paths at start, error if not found; ISSO_SETTINGS takes precedence over -c flag by @ix5 in https://github.com/posativ/isso/pull/854
    • isso: migrate: Workaround empty Disqus ids/titles by @ix5 in https://github.com/posativ/isso/pull/855
    • [client] js: Support enabling reply notifications checkbox by default by @BBaoVanC in https://github.com/posativ/isso/pull/846
    • js: template: Do not strip newlines by @ix5 in https://github.com/posativ/isso/pull/857
    • [docs] Add Markdown rendering explanation, refs, more styling of tables and other elements by @ix5 in https://github.com/posativ/isso/pull/864
    • [client] js: Postbox: Use labels rather than placeholders by @ix5 in https://github.com/posativ/isso/pull/861
    • [server] Re-enable no-intra-emphasis Markdown ext, allow sub/sup elms by default, src if img by @ix5 in https://github.com/posativ/isso/pull/865
    • README: Include more information, new screenshot by @ix5 in https://github.com/posativ/isso/pull/867
    • Make it possible to identify the page author's comments by @BBaoVanC in https://github.com/posativ/isso/pull/844
    • [js] [tests] Add unit tests for postbox, comment-loader, comment rendering; better stubbing/TZ handling by @ix5 in https://github.com/posativ/isso/pull/868
    • [client] Fix avatar sizing on Chrome & Safari by @BBaoVanC in https://github.com/posativ/isso/pull/872
    • .github: Add issue, PR templates by @ix5 in https://github.com/posativ/isso/pull/873
    • [docs] Document server testing/pytest a little more clearly by @ix5 in https://github.com/posativ/isso/pull/876
    • app: i18n: Added Ukrainian translation by @okawo80085 in https://github.com/posativ/isso/pull/878
    • [client] Highlight linked comments to identify them by @BBaoVanC in https://github.com/posativ/isso/pull/845
    • [client] i18n: Enable Turkish translations, add missing German strings by @ix5 in https://github.com/posativ/isso/pull/879
    • [server] Add /config endpoint by @ix5 in https://github.com/posativ/isso/pull/880
    • [docs] Update theme location, various nits by @ix5 in https://github.com/posativ/isso/pull/881
    • [config] Move isso-dev.cfg to contrib/ by @ix5 in https://github.com/posativ/isso/pull/882
    • js: count: Don't send /count request if there are no counters by @BBaoVanC in https://github.com/posativ/isso/pull/869
    • [client] js: test/integration: Test API directly by @ix5 in https://github.com/posativ/isso/pull/884
    • [client] Minor client bugfixes by @ix5 in https://github.com/posativ/isso/pull/886
    • [server] Remove obsolete /count GET, apiDoc improvements by @ix5 in https://github.com/posativ/isso/pull/883
    • [client][ci] Tests: Add screenshot testing by @ix5 in https://github.com/posativ/isso/pull/889
    • [CI] js: test: Decouple screenshots from regular e2e tests by @ix5 in https://github.com/posativ/isso/pull/890
    • [server] core: Replace flask-caching dependency with drop-in by @ix5 in https://github.com/posativ/isso/pull/893
    • [server] views: comments: Check using get(), not 'in' by @ix5 in https://github.com/posativ/isso/pull/895
    • Move references from posativ.org/isso/ to isso-comments.de by @ix5 in https://github.com/posativ/isso/pull/897
    • js, templates: Replace contenteditable div with textarea by @BBaoVanC in https://github.com/posativ/isso/pull/887
    • [server] [client] [docs] Fetch feed config from server, cleanup docs, isso-dev.cfg nits by @ix5 in https://github.com/posativ/isso/pull/898
    • [client] js: Fetch public conf once from /config; embed.js: Preserve default config values by @ix5 in https://github.com/posativ/isso/pull/821
    • [server] Strip trailing slash from public-endpoint, disallow trailing slash by @ix5 in https://github.com/posativ/isso/pull/877
    • [server] db: comments: Constrain parent of new comments by @ix5 in https://github.com/posativ/isso/pull/885
    • admin, demo: Use trailing slashes for user-facing pages by @ix5 in https://github.com/posativ/isso/pull/900
    • [docs] Polish contribute page, css list nits, client-config & docker fixes by @ix5 in https://github.com/posativ/isso/pull/901
    • [client] CSS cleanup by @ix5 in https://github.com/posativ/isso/pull/902
    • migrate: Handle single newlines in WordPress comments as line breaks by @projectgus in https://github.com/posativ/isso/pull/903

    New Contributors

    • @davidak made their first contribution in https://github.com/posativ/isso/pull/828
    • @Fryboyter made their first contribution in https://github.com/posativ/isso/pull/835
    • @BBaoVanC made their first contribution in https://github.com/posativ/isso/pull/846
    • @okawo80085 made their first contribution in https://github.com/posativ/isso/pull/878
    • @projectgus made their first contribution in https://github.com/posativ/isso/pull/903

    Full Changelog: https://github.com/posativ/isso/compare/0.12.6...0.13.0

    Source code(tar.gz)
    Source code(zip)
    isso-0.13.0-py3-none-any.whl(190.67 KB)
    isso-0.13.0-py3-none-any.whl.asc(833 bytes)
    isso-0.13.0.tar.gz(181.46 KB)
    isso-0.13.0.tar.gz.asc(833 bytes)
  • 0.12.6.2(Apr 23, 2022)

  • 0.12.6.1(Mar 21, 2022)

  • 0.12.6(Mar 15, 2022)

    What's Changed

    • Add sphinxnotes-isso to related projects by @SilverRainZ in https://github.com/posativ/isso/pull/714
    • Improve cookie SameSite/secure handling by @ix5 in https://github.com/posativ/isso/pull/700
    • Serve isso.css separately instead of inline by @ix5 in https://github.com/posativ/isso/pull/704
    • Move the IRC channel to irc.libera.chat by @jelmer in https://github.com/posativ/isso/pull/731
    • Add Korean translation by @hwiorn in https://github.com/posativ/isso/pull/727
    • Update Vietnamese translation by @ruathudo in https://github.com/posativ/isso/pull/721
    • Add a github action by @jelmer in https://github.com/posativ/isso/pull/707
    • Fix GitHub actions by @BookGin in https://github.com/posativ/isso/pull/733
    • Require an edit cookie to be able to view a comment to be edited. by @fluffy-critter in https://github.com/posativ/isso/pull/683
    • admin: restore comment content after cancel edit by @rocka in https://github.com/posativ/isso/pull/470
    • docs: install: Reorder Install from source, py3.5 by @ix5 in https://github.com/posativ/isso/pull/703
    • Remove legacy werkzeug support by @ix5 in https://github.com/posativ/isso/pull/702
    • Use <pre> for comments in admin area by @ix5 in https://github.com/posativ/isso/pull/604
    • Build JavaScript files during python package build by @stefangehn in https://github.com/posativ/isso/pull/697
    • utils: html: Normalize misaka extensions by @ix5 in https://github.com/posativ/isso/pull/686
    • Dockerfile: Set TOX_ENV to use artifacts from nodejs build instead of building inside Python container (fixes #759) by @alexandru in https://github.com/posativ/isso/pull/760
    • Avoid TypeError when #isso-root is not in the DOM by @zaygraveyard in https://github.com/posativ/isso/pull/757
    • config: Disable interpolation of values by @ix5 in https://github.com/posativ/isso/pull/764
    • Handle browsers with no navigator.language better (#521) by @zackw in https://github.com/posativ/isso/pull/674
    • Have client read out shared settings from server by @pellenilsson in https://github.com/posativ/isso/pull/311
    • docs: quickstart: fix comment in sample config by @kevinnls in https://github.com/posativ/isso/pull/769
    • Remove py2 import remnants, sort imports, cleanup, move to pytest, enable python 3.10 by @ix5 in https://github.com/posativ/isso/pull/767
    • docs: Minor nits: Reword link, include advanced-migration in sidebar, copyright, clean conf by @ix5 in https://github.com/posativ/isso/pull/795
    • .github: Add sphinx docs GH Action by @ix5 in https://github.com/posativ/isso/pull/796
    • Revert "Build JavaScript files during python package build" by @ix5 in https://github.com/posativ/isso/pull/798
    • comment moderation fix item value check by @fliiiix in https://github.com/posativ/isso/pull/799
    • [UGLY] admin: Use textarea for comment editing by @ix5 in https://github.com/posativ/isso/pull/793
    • Remove ISSO_CORS_ORIGIN and references by @ix5 in https://github.com/posativ/isso/pull/803
    • setup.py, README: Generate proper Project Description for PyPi by @ix5 in https://github.com/posativ/isso/pull/802
    • views: moderation: Add unit tests, proper response instead of "Yo", apiDoc clarifications by @fliiiix in https://github.com/posativ/isso/pull/805

    New Contributors

    • @hwiorn made their first contribution in https://github.com/posativ/isso/pull/727
    • @ruathudo made their first contribution in https://github.com/posativ/isso/pull/721
    • @BookGin made their first contribution in https://github.com/posativ/isso/pull/733
    • @alexandru made their first contribution in https://github.com/posativ/isso/pull/760
    • @zaygraveyard made their first contribution in https://github.com/posativ/isso/pull/757
    • @zackw made their first contribution in https://github.com/posativ/isso/pull/674
    • @kevinnls made their first contribution in https://github.com/posativ/isso/pull/769

    Full Changelog: https://github.com/posativ/isso/compare/0.12.5...0.12.6

    Source code(tar.gz)
    Source code(zip)
    isso-0.12.6.tar.gz(146.20 KB)
  • 0.11.1(Nov 4, 2018)

  • 0.11.0(Nov 4, 2018)

    Bugs & features:

    • Fix link in moderation mails if isso is setup on a sub-url (e.g. domain.tld/comments/)
    • Add reply notifications
    • Add admin interface
    • Add links highlighting in comments
    • Add apidoc
    • Add rc.d script for FreeBSD
    • Add the possibility to set CORS Origin through ISSO_CORS_ORIGIN environ variable
    • Add preview button
    • Add Atom feed at /feed?uri={thread-id}
    • Add optionnal gravatar support
    • Add nofollow noopener on links inside comments
    • Add Dockerfile
    • Upgraded to Misaka 2
    • Some tests/travis/documentation improvements and fixes + pep8

    Translations:

    • Fix Chinese translation & typo in CJK
    • Add Danish translation
    • Add Hungarian translation
    • Add Persian translation
    • Improvement on german translation
    Source code(tar.gz)
    Source code(zip)
  • 0.10.5(Sep 20, 2016)

    • add support for different vote levels, #260

      List of vote levels used to customize comment appearance based on score. Provide a comma-separated values (eg. "0,5,10,25,100") or a JSON array (eg. "[-5,5,15]").

      For example, the value "-5,5" will cause each isso-comment to be given one of these 3 classes:

      • isso-vote-level-0 for scores lower than -5
      • isso-vote-level-1 for scores between -5 and 4
      • isso-vote-level-2 for scores of 5 and greater

      These classes can then be used to customize the appearance of comments (eg. put a star on popular comments).

    • add new post preview API endpoint, #254

    • add an option for mandatory author, #257

    • clients can now use data-title to get the HTML title for a new page, #252

    • add finish translation and other minor bugfixes

    Source code(tar.gz)
    Source code(zip)
    isso-0.10.5-py2.py3-none-any.whl(104.86 KB)
    isso-0.10.5-py2.py3-none-any.whl.asc(819 bytes)
    isso-0.10.5.tar.gz(98.61 KB)
    isso-0.10.5.tar.gz.asc(819 bytes)
  • 0.10.4(Apr 12, 2016)

  • 0.10.1(Feb 6, 2016)

  • 0.10(Feb 6, 2016)

    • add new configuration section for hash handling.

      [hash]
      salt = Eech7co8Ohloopo9Ol6baimi
      algorithm = pbkdf2
      

      You can customize the salt, choose different hash functions and tweak the parameters for PBKDF2.

    • Python 3.4+ validate TLS connections against the system's CA. Previously no validation was in place, see PEP-446 for details.

    • add fenced_code and no_intra_emphasis to default configuration.

      Fenced code allows to write code without indentation using ~~~ delimiters (optionally with language identifier).

      Intra emphasis would compile foo_bar_baz to foobarbaz. This behavior is very confusing for users not knowing the Markdown spec in detail.

    • new configuration to require an email when submitting comments, #199. Set

        [guard]
        require-email = true
      

      and use data-isso-require-email="true" to enable this feature. Disabled by default.

    • new Bulgarian translation by sahwar, new Swedish translation by Gustav Näslund – #143, new Vietnamese translation by Đinh Xuân Sâm, new Croatian translation by streger, new Czech translation by Jan Chren

    • fix SMTP setup without credentials, #174

    • version pin Misaka to 1.x, html5lib to 0.9999999

    Source code(tar.gz)
    Source code(zip)
    isso-0.10-py2.py3-none-any.whl(101.17 KB)
    isso-0.10-py2.py3-none-any.whl.asc(819 bytes)
    isso-0.10.tar.gz(92.74 KB)
    isso-0.10.tar.gz.asc(819 bytes)
  • 0.9.10(Apr 11, 2015)

  • 0.9.9(Mar 4, 2015)

    • several Python 3.x related bugfixes
    • don't lose comment form if the server rejected the POST request, #144
    • add localStorage fallback if QUOTA_EXCEEDED_ERR is thrown (e.g. Safari private browsing)
    • add '--empty-id' flag to Disqus import, because Disqus' export sucks
    • (re)gain compatibility with Werkzeug 0.8 and really old html5lib versions available in Debian Squeeze, #170 & #168
    • add User-Agent when Isso requests the URL, an alternate way to #151 (add 'X-Isso' when requesting).
    Source code(tar.gz)
    Source code(zip)
    isso-0.9.tar.gz(74.94 KB)
    isso-0.9.tar.gz.asc(836 bytes)
  • 0.9.6(Aug 18, 2014)

    • remember name, email and website in localStorage, #119

    • add option to hide voting feature, #115

      data-isso-vote="true|false"
      
    • remove email field from JSON responses

      This is a quite serious issue. For the identicon, an expensive hash is used to avoid the leakage of personal information like a real email address. A git blame reveals, the email has been unintenionally exposed since the very first release of Isso :-/

      The testsuite now contains a dedicated test to prevent this error in the future.

    Source code(tar.gz)
    Source code(zip)
    isso-0.9.6.tar.gz(77.19 KB)
    isso-0.9.6.tar.gz.asc(819 bytes)
  • 0.9.5(Aug 10, 2014)

    • prevent no-break space ( ) insertion to enable manual line breaks using two trailing spaces (as per Markdown convention), #112

    • limit request size to 256 kb, #107

      Previously unlimited or limited by proxy server). 256 kb is a rough approximation of the next database schema with comments limited to 65535 characters and additional fields.

    • add support for logging to file, #103

      [general]
      log-file =
      
    • show timestamp when hovering

    • fix a regression when editing comments with multiple paragraphs introduced in 0.9.3 which would HTML escape manually inserted linebreaks.

    Source code(tar.gz)
    Source code(zip)
    isso-0.9.5.tar.gz(76.89 KB)
    isso-0.9.5.tar.gz.asc(819 bytes)
  • 0.9.3(Jul 9, 2014)

    • remove scrollIntoView while expanding further comments if a fragment is used (e.g. #isso-thread brought you back to the top, unexpectedly)
    • implement a custom Markdown renderer to support multi-line code listings. The extension "fenced_code" is now enabled by default and generates HTML compatible with Highlight.js.
    • escape HTML entities when editing a comment with raw HTML
    • fix CSS for input
    • remove isso.css from binary distribution to avoid confusion (it's still there from the very first release, but modifications do not work)
    Source code(tar.gz)
    Source code(zip)
    isso-0.9.3.tar.gz(76.43 KB)
    isso-0.9.3.tar.gz.asc(819 bytes)
  • 0.9(May 29, 2014)

    • comment pagination by Srijan Choudhary, #15

      Isso can now limit the amount of comments shown by default and add link to show more. By default, all top-level comments are shown but only 5 nested comments (per reply). You can override the settings:

      isso-data-max-comments-top="N" isso-data-max-comments-nested="N"
      

      Where N is a number from 0 to infinity ("inf"). If you limit the amount of shown top level comments, the overall comment count may be incorrect and a known issue.

      You can also configure the amount of comments shown per click (5 by default):

      isso-data-reveal-on-click="N"
      

      This feature also required a change in the comment structure. Previously, all comments are stored tree-like but shown linearly. To ease the implementation of pagination, the comment tree is now limited to a maximum depth of one. Jeff Atwood explains, why discussions are flat by design.

      When you upgrade, Isso will automatically normalize the tree and some information gets lost. All new replies to a comment are now automatically a direct child of the top-level comment.

    • style improvements by William Dorffer, #39, #84 #90 and #91

      Isso now longer uses a fat SCSS library, but plain CSS instead. The design is now responsive and no longer sets global CSS rules.

    • experimental WordPress import, #75

      Isso should be able to import WXR 1.0-1.2 exports. The import code is based on two WXR dumps I found (and created) and may not work for you. Please report any failure.

    • avatar changes, #49

      You can now configure the client to not show avatars:

      data-isso-avatar="false"
      

      Also there is no longer an avatar shown next to the comment box. This is due to the new CSS and removes two runtime dependencies.

    • you may now set a full From header, #87

      [smtp]
      from = Foo Bar <spam@local>
      
    • SMTP (all caps) is now recognized for notifications, #95

    • Isso now ships a small demo site at /demo, #44

    • a few bugfixes: Disqus import now anonymizes IP addresses, uWSGI spooling for Python 3, HTTP-Referer fallback for HTTP-Origin

    • remove Django's PBKDF2 implementation in favour of the PBKDF2 function available in werkzeug 0.9 or higher. If you're still using werkzeug 0.8, Isso imports passlib as fallback (if available).

    This release also features a new templating engine Jade which replaces Markup.js. Jade can compile directly to JavaScript with a tiny runtime module on the client. Along with the removal of sha1.js and pbkdf2.js and a few build optimizations, the JS client now weighs only 40kb (12kb gzipped) – 52kb resp. 17kb before.

    Source code(tar.gz)
    Source code(zip)
    isso-0.9.1.tar.gz(75.04 KB)
    isso-0.9.1.tar.gz.asc(836 bytes)
  • 0.8(Mar 28, 2014)

    • replace <textarea> with <div contentedtiable="true"> to remove the sluggish auto-resize on input feature. If you use a custom CSS, replace textarea with .textarea.

    • remove superscript extension from Markdown defaults as it may lead to unexpected behavior for certain smileys such as "^^". To enable the extension, add

      [markup]
      options = superscript
      allowed-elements = sup
      

      to your configuration.

    • comment count requests are now bundled into a single POST request, but the old API is still there (deprecated though).

    • store session-key in database (once generated on database creation). That means links to activate, edit or delete comments are now always valid even when you restart Isso.

      Currently statically set session keys in [general] are automatically migrated into the database on startup and you will get a notice that you can remove this option.

    • fix undefined timestamp when client time differs for more than 1 second. The human-readable "time ago" deltas have been refined to match Moment.js behavior.

    • avatar colors and background can now be customized:

      • data-isso-avatar-bg="#f0f0f0" sets the background color
      • data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..." sets possible avatar colors (up to 8 colors are possible).
    • new [markup] section to customize Misaka's Markdown generation (strikethrough and autolink enabled by default). Furthermore, you can now allow certain HTML elemenets and attributes in the generated output, e.g. to enable images, set

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

      Check docs/configuration/server.rst for more details.

    • replace requirejs-domready with a (self-made) HTML5 idiom, #51

    Source code(tar.gz)
    Source code(zip)
  • 0.7(Jan 29, 2014)

    • fix malicious HTML injection (due to wrong API usage). All unknown/unsafe HTML tags are now removed from the output (html5lib 0.99(9) or later) or properly escaped (older html5lib versions).

      See 36d702c and 3a1f92b for more details.

    • remove kriskowal/q JS library (promises implementation) in favour of a self-made 50 LoC implementation to ease packaging (for Debian), #51

    • add documentation to display a comment counter, #56 and #57

    • SMTP notifications now support STARTTLS and use this transport security by default, #48 and #58. This also changes the configuration option from ssl = [yes|no] to security = [none|starttls|ssl].

    • translation can now be made (and updated) with Transifex. If you want to take ownership for a language, contact me on IRC.

    • fix french pluralform

    • the (by default random) session-key is now shown on application startup to make different keys per startup more visible

    • use threading.lock by default for systems without semaphore support

    Source code(tar.gz)
    Source code(zip)
    isso-0.7.1.tar.gz(93.34 KB)
    isso-0.7.1.tar.gz.asc(836 bytes)
    isso-0.7.tar.gz(93.28 KB)
  • 0.6.1(Jan 12, 2014)

    This bugfix release now sanitizes HTML tags based on a whitelist (also prevents auto-link to "unsafe" web protocols and images) as intended.

    Fortunately because of Sundown's typography support, it did not affect JS injection, but custom style tags and iframes.

    PS: thanks to the anonymous submitter of a comment including a style tag for 24pt, red font ;-)

    Source code(tar.gz)
    Source code(zip)
  • 0.6(Dec 16, 2013)

    Major improvements:

    • override thread discovery with data-isso-id="...", #27

    To use the same thread for different URLs, you can now add a custom data-isso-id="my-id" attribute which is used to identify and retrieve comments (defaults to current URL aka window.location.pathname).

    • isso.dispatch now dispatches multiple websites (= configurations) based on URL prefixes
    • fix a cross-site request forgery vulnerability for comment creation, voting, editing and deletion, #40
    • show modal dialog to confirm comment deletion and activation, #36
    • new, comprehensive documentation based on reST + Sphinx: http://posativ.org/docs (or docs/ in the repository). Also includes an annotated example.conf, #43
    • new italian and russian translations

    Minor improvements:

    • move isso:application to isso.run:application to avoid uneccessary initialization in some cases (change module if you use uWSGI or Gunicorn)
    • add Date header to email notifications, #42
    • check for blank text in new comment, #41
    • work around IE10's HTML5 abilities for custom data-attributes
    • add support for Gunicorn (and other pre-forking WSGI servers)
    Source code(tar.gz)
    Source code(zip)
  • 0.5.2(Dec 2, 2013)

  • 0.5.1(Dec 2, 2013)

  • 0.5(Nov 17, 2013)

    Major improvements:

    • listen option replaces host and port to support UNIX domain sockets, #25

      Instead of host = localhost and port = 8080, use listen = http://localhost:8080. To listen on a UNIX domain socket, replace http:// with unix://, e.g. unix:///tmp/isso.sock.

    • new option notify (in the general section) is used to choose (one or more) notification backends (currently only SMTP is available, though). Isso will no longer automatically use SMTP for notifications if the initial connection succeeds.

    • new options to control the client integration

      • data-isso-css="false" prevents the client from appending the CSS to the document. Enabled by default.
      • data-isso-lang="de" overrides the useragent's preferred language (de, en and fr are currently supported).
      • data-isso-reply-to-self="true" should be set, when you allow reply to own comments (see server configuration for details).
    • add support for gevent, a coroutine-based Python networking library that uses greenlets (lightweight threads). Recommended WSGI server when not running with uWSGI (unfortunately stable gevent is not yet able to listen on a UNIX domain socket).

    • fix a serious issue with the voters bloomfilter. During an Isso run, the ip addresses from all commenters accumulated into the voters bloomfilter for new comments. Thus, previous commenters could no longer vote other comments. This fixes the rare occurences of #5.

      In addition to this fix, the current voters bloomfilter will be re-initialized if you are using Isso 0.4 or below (this is not necessary, but on the other hand, the current bloomfilter for each comment is sort-of useless).

    • french translation (thanks to @sploinga), #38

    • support for multiple sites, part of #34

    Minor improvements:

    • ipaddr is now used as ipaddress fallback for Python 2.6 and 2.7, #32
    • changed URL to activate and delete comments to /id/<N:int>/activate etc.
    • import command uses tag instead of to extract the relative URL path, #37
    • import command now uses isDeleted to mark comments as deleted (and eventually remove stale comments). This seems to affect only a few comments from a previous WordPress import into Disqus.
    • import command lists orphaned comments after import.
    • import command now has a --dry-run option to do no actual operation on the database.
    Source code(tar.gz)
    Source code(zip)
Owner
Martin Zimmermann
Was ist das für 1 Profil.
Martin Zimmermann
A Google Charts API for Python, meant to be used as an alternative to matplotlib.

GooPyCharts A Google Charts API for Python 2 and 3, meant to be used as an alternative to matplotlib. Syntax is similar to MATLAB. The goal of this pr

Sagnik Ghosh 202 Oct 4, 2022
A ShareX alternative for Mac OS built in Python.

Clipboard Uploader A ShareX alternative for Mac OS built in Python. Install and setup Download the latest release and put it in your applications fold

Ben Tettmar 2 Jun 7, 2022
Faster Twitch Alerts is a highly customizable, lightning-fast alternative to Twitch's slow mobile notification system

Faster Twitch Alerts What is "Faster Twitch Alerts"? Faster Twitch Alerts is a highly customizable, lightning-fast alternative to Twitch's slow mobile

null 6 Dec 22, 2022
An alternative to OpenFaaS nats-queue-worker for long-running functions

OpenFaas Job Worker OpenFaas Job Worker is a fork of project : OSCAR Worker - https://github.com/grycap/oscar-worker Thanks to Sebástian Risco @srisco

Sebastien Aucouturier 1 Jan 7, 2022
Disqus API bindings for Python

disqus-python Let's start with installing the API: pip install disqus-python Use the API by instantiating it, and then calling the method through dott

DISQUS 163 Oct 14, 2022
PyArmadillo: an alternative approach to linear algebra in Python

PyArmadillo is a linear algebra library for the Python language, with an emphasis on ease of use.

Terry Zhuo 58 Oct 11, 2022
A Google Charts API for Python, meant to be used as an alternative to matplotlib.

GooPyCharts A Google Charts API for Python 2 and 3, meant to be used as an alternative to matplotlib. Syntax is similar to MATLAB. The goal of this pr

Sagnik Ghosh 202 Oct 4, 2022
An alternative implement of Imjad API | Imjad API 的开源替代

HibiAPI An alternative implement of Imjad API. Imjad API 的开源替代. 前言 由于Imjad API这是什么?使用人数过多, 致使调用超出限制, 所以本人希望提供一个开源替代来供社区进行自由的部署和使用, 从而减轻一部分该API的使用压力 优势

Mix Technology 450 Dec 29, 2022
Declarative model lifecycle hooks, an alternative to Signals.

Django Lifecycle Hooks This project provides a @hook decorator as well as a base model and mixin to add lifecycle hooks to your Django models. Django'

Robert Singer 1k Dec 31, 2022
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.

Glances - An eye on your system Summary Glances is a cross-platform monitoring tool which aims to present a large amount of monitoring information thr

Nicolas Hennion 22k Jan 4, 2023
A Robust Non-IoU Alternative to Non-Maxima Suppression in Object Detection

Confluence: A Robust Non-IoU Alternative to Non-Maxima Suppression in Object Detection 1. 介绍 用以替代 NMS,在所有 bbox 中挑选出最优的集合。 NMS 仅考虑了 bbox 的得分,然后根据 IOU 来

null 44 Sep 15, 2022
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.

Glances - An eye on your system Summary Glances is a cross-platform monitoring tool which aims to present a large amount of monitoring information thr

Nicolas Hennion 22k Jan 8, 2023
📖 Generate markdown API documentation from Google-style Python docstring. The lazy alternative to Sphinx.

lazydocs Generate markdown API documentation for Google-style Python docstring. Getting Started • Features • Documentation • Support • Contribution •

Machine Learning Tooling 118 Dec 31, 2022
Get Your Localhost Online - Ngrok Alternative

Get Your Localhost Online - Ngrok Alternative

Azimjon Pulatov 442 Jan 4, 2023
Minimal, self-hosted, 0-config alternative to ngrok. Caddy+OpenSSH+50 lines of Python.

If you have a webserver running on one computer (say your development laptop), and you want to expose it securely (ie HTTPS) via a public URL, SirTunnel allows you to easily do that.

Anders Pitman 423 Jan 2, 2023
An exploration of log domain "alternative floating point" for hardware ML/AI accelerators.

This repository contains the SystemVerilog RTL, C++, HLS (Intel FPGA OpenCL to wrap RTL code) and Python needed to reproduce the numerical results in

Facebook Research 373 Dec 31, 2022
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at

Alternative firmware for ESP8266/ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability

Theo Arends 59 Dec 26, 2022
A Python library that provides a simplified alternative to DBAPI 2

A Python library that provides a simplified alternative to DBAPI 2. It provides a facade in front of DBAPI 2 drivers.

Tony Locke 44 Nov 17, 2021
Alternative StdLib for Nim for Python targets

Alternative StdLib for Nim for Python targets, hijacks Python StdLib for Nim

Juan Carlos 100 Jan 1, 2023
Mathics is a general-purpose computer algebra system (CAS). It is an open-source alternative to Mathematica

Mathics is a general-purpose computer algebra system (CAS). It is an open-source alternative to Mathematica. It is free both as in "free beer" and as in "freedom".

Mathics 535 Jan 4, 2023