Giter VIP home page Giter VIP logo

isso's Introduction

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.

Features

  • Comments written in Markdown
    Users can edit or delete own comments (within 15 minutes by default). Comments in moderation queue are not publicly visible before activation.
  • SQLite backend
    Because comments are not Big Data.
  • Disqus & WordPress Import
    You can migrate your Disqus/WordPress comments without any hassle.
  • Configurable JS client
    Embed a single JS file, 65kB (20kB gzipped) and you are done.

See isso-comments.de for a live demo, more details and documentation.

Screenshot

Isso in Action

Getting started

Requirements

  • Python 3.8+ (+ devel headers)
  • SQLite 3.3.8 or later
  • a working C compiler

Install Isso from PyPi:

pip install isso

Then, follow the Quickstart guide.

If you're stuck, follow the Install guide, see Troubleshooting and browse the the full documentation.

Docker

Note

The Docker image tagging scheme for stable releases was changed from :latest to :release as of March 2024 (#970, #1012)

A Docker image with the latest stable release is provided at ghcr.io/isso-comments/isso:release, while isso:latest is rebuilt on every push to the master branch. See Using Docker.

The maintainers recommend pinning the image to a release tag, e.g. isso:0.13.0.

Contributing

Development

Refer to the docs for Installing from Source.

Help

License

MIT, see LICENSE.

isso's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isso's Issues

Missing tag for version 0.4

I've noticed that the latest version of isso available on pypi is 0.4, but there is no tag for the release on the git repository, so I was going to miss it.

Could you please add the tag?

Thanks in advance

Supervisor configuration file

I suggest you this Supervisor configuration file to add to the init scripts :
N.B.: The environment line is optional, I had to add it because of UnicodeEncodeError (as @posativ suggested on IRC mar. 27 2014).

[program:isso]
command = /usr/local/bin/isso -c /etc/isso.conf run
directory = /var/lib/isso
user = isso
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/isso.log
stderr_logfile = /var/log/supervisor/isso_err.log
environment = LANG="fr_FR.UTF-8"

I'm not a git Guru, do as you please to add it.

usability minors

  • email address is actually only a private identifier to generate the same identicon again
  • blank identicon changes to identicon from IP address changes to identicon from mail address -> not really intuitive on first evaluation
  • remove comment but still hovering the button reverts to original state after ~1 second
  • when replied to a comment, scrollIntoView doesn't work as expected (scrolled half page after document end)
  • when you vote multiple times on a comment, you should get a appropriate error message

language selection not working?

Thank you for this wonderful software and the good documentation! This is what I was looking for for a long time. I'll use it together with Jekyll for blogging R-code. The only problem I could not solve so far is the language: the plugin has the default de GUI and does not switch to en despite the following code.

<script data-isso="http://isso.bioinformatix.org"
        data-isso-css="true"
        data-isso-lang="en"
        data-isso-reply-toself="false"
        src="http://isso.bioinformatix.org/js/embed.min.js">
</script>

<section id="isso-thread"></section>

See my test-page http://jekyll.bioinformatix.org/lessons/2014/01/06/knitr-jekyll/.

Probably this is not a bug but a miss-configuration on my side? Anyway I'd appreciate any hint how to solve this very much!

Best regards, Felix

Javascript loading wrong url, adding a / where it maybe should not

Hi and thanks a lot for this software ! 

I tried to install isso and went through up to this point :

If you try to load this page for example :

http://politiquedunetz.sploing.be/2013/10/reconnaitre-la-valeur-des-haineux/

You can see in a debugger that the javascript is trying to load that url : http://politiquedunetz.sploing.be/isso/?uri=%2F2013%2F10%2Freconnaitre-la-valeur-des-haineux%2F while the correct one, resulting from an import of disqus, is http://politiquedunetz.sploing.be/isso/?uri=2013%2F10%2Freconnaitre-la-valeur-des-haineux%2F

I don't know how to correct that somewhere. If you take a look at the source of the page in question, you can see that I already tried to fix it via data-isso or isso-thread, without effect.

Do you think it may be link to a configuration file somewhere. My isso.conf reads : 

host = https://politiquedunetz.sploing.be/
http://politiquedunetz.sploing.be/

while my apache config is : 

<VirtualHost *:80>
 ServerAdmin [email protected]
 ServerName politiquedunetz.sploing.be
 VirtualDocumentRoot /var/www/politiquedunetz
 CustomLog ${APACHE_LOG_DIR}/politiquedunetz.log combined
<Location /isso>
        Allow from all
        ProxyPass http://localhost:1234
        ProxyPassReverse http://localhost:1234
</Location>
</VirtualHost>

Thanks a lot for your remarks !

i18n

Use a JS library (such as Jed) to handle i18n and allow users to create custom messages (e.g. formal vs. informal speak) during build process.

Include german and english messages by default, add instructions on how to add new languages when Isso reaches beta status.

Recommeded deployment method

Hi,
What is the recommended deployment method: built-in or WSGI server?
On https://github.com/posativ/isso/blob/master/docs/uWSGI.md it reads:
"Use uWSGI if you think that the builtin WSGI server is a bad choice or slow (hint: it's both)."
(The question is relevant for the Debian packaging of Isso)

Also, is there a plan to support multiple websites using one configuration file/process? Configuring and running many instances might look a bit unpractical compared to web servers that support "sites-enabled" directories.

Thanks

docs for integrating with django

Hello there,

I was wondering if there were any docs explaining how to integrate isso with django.
Isso seems great - would like to try it within django!

John J

spam guard slighty broken

Currently, the spam guard prevents a /24 IP from posting more than three comments directly as a response to a post for all threads (not per thread). As a current workaround, disable the spam guard: [guard] -> enabled = false.

auto-refresh comments every N minutes

The client should ask the server for new/updated comments (with a Last-Modified: ... header to reduce overhead when nothing has changed) every N minutes.

Comment form on mobile phones / small screens

The form doesn't scale responsively as the screen size reduces a lot. Submit button text goes on reducing and only displays Sub. It should go on next line. Needs minor hack in css files. I might look into it and submit a patch.

db normalization

in case SQLite does not hash/compress the primary key, main.threads should feature a path -> id mapping and all relating DBs should use id instead of path.

administration CLI

A tiny command-line application to administrate more than just comment activation and deletion (preferably written in Python to use the isso.db module). Administration tools:

  • comment deletion and activation
  • follow redirects, manually edit thread url/id
  • remove all comments from a given field (e.g. IP address)
  • remove thread and comments when web page is gone (error 404 or 410)
  • Disqus/WordPress/... import and export (if possible), Disqus import from Isso can be removed then

Anything else?

CSRF on upvotes/downvotes

It looks like there's a CSRF on upvotes/downvotes. In fact I was able to downvote a comment using the following command (I got it from Chrome Developer Tools):

curl 'http://posativ.org/isso/api/id/1/dislike' -X POST -H 'Origin: http://posativ.org' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: posativ.org' -H 'Accept-Language: en-US,en;q=0.8,fr;q=0.6' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1567.0 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://posativ.org/isso/' -H 'Connection: keep-alive' -H 'Content-Length: 0' --compressed

I'm pretty sure it'd be possible to make a simple PoC with JS that would force a client to trigger a vote.

Feature request : Integration with github.io

I host my static site ( I use pelican, if it matters) on github.io - The development happens on my machine- generated pages are then "committed/pushed" to github.io

disqus lets me use their system with my setup.
Based on the isso documentation - it seems like will need my own server to use isso.

Are there plans to integrate w/ github.io ?

store page title in database

In the admin interface (and shortly also in email) Isso can only show the path for a comment, not the actual title.

Instead of AJAXing all page titles, it is more efficient to store these in the database.

pagination, load more on demand

Around 1000 comments per thread result in 11 second response time from the server and > 30 second rendering time in the browser. Better fetch only e.g. 20 comments and load more during scrolling (or on "show more" click).

Missing Date in Mail Header

In Mailheader the date field is missing.

Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
From: <from>
To: <mail>
Subject: <subject>

App für Isso ?

Hey,

wird es auch eine App für isso geben ? Bin jetzt schon ein großer Fan und finde isso auch gut :)

Regards ;),
Jan

Improve socket handling

I've experienced some issues with sockets and have some ideas how to improve it:

First problem is that isso tries to unlink an existing socket when starting even if it would have enough rights and it does not have a privilege drop function. That makes it impossible to e.g. use /var/run/isso.sock as a socket when isso is not running as root, because /var/run is only writable by root. Even if I manually create a socket and give it to the isso user, isso will delete it and cannot create a new one.

I would expect isso to use an existing socket if it has read and write permissions.

Second problem is missing chmod option for the socket. This way only the isso user can use socket and e.g. nginx running another user cannot connect to the socket.

It would be incredible if I could specify chmod and user for the socket and user and group for isso, and isso would create socket as root and do a privilege drop to specified user and group before starting to function.

Example:

[server]
bind = unix:///var/run/isso.sock?chmod=660&user=www-data
user = isso
group = www-data

third-party libraries

Third-party libraries essential for Isso (and unlikely to be rewritten from scratch):

Build dependencies

  • Jade, precompile templates to JS for client execution.
  • Almond – create a single file JS
  • RequireJS – AMD file loader and build system
  • RequireJS' Text – compile non-Js resources into JS

Runtime dependencies

  • Jade – tiny runtime.js for precompiled templates
  • werkzeug – WSGI toolkit
  • itsdangerous – store signed data on untrusted clients
  • misaka – fast Markdown processor written in C
  • html5lib – HTML(5) parser and sanitizer

Optional

  • passlib – PBKDF2 implementation fallback if werkzeug 0.8

Python 2

Hide avatars

I've a minimalist style on a static blog, and I would like to hide the avatars without a display:none in CSS. Is there some kind of "data-isso-avatars="false"" we could use ?

new?uri and check-ip issues

Hi,

Here is the situation : I am testing isso on my local computer with acrylamid.

When I try to input my comment and submit it nothing happens and I have two errors in the console log :

[Error] Failed to load resource: the server responded with a status of 404 (Not Found) (check-ip, line 0) > http://localhost:8000/check-ip
[Error] Failed to load resource: the server responded with a status of 501 (Not Implemented) (new, line 0) http://localhost:8000/new?uri=NameOfMyPage

There must be something wrong in my installation or configuration but I do not understand what. Could you help me?

Thanks.

uwsgi say Internal Server Error

not what is the error .. my configuration is:

[uwsgi]
http = :2710
master = true
processes = 1
cache2 = name=hash,items=10240,blocksize=32
spooler = %d/mail
module = isso
virtualenv = %d
env = ISSO_SETTINGS=%d/isso.conf

Y isso.conf

[general]
dbpath = /www/distopico.info/isso/isso.db

host = https://ardervegan.info/blog/

#max-age = 15m
#session-key = ... ; python: binascii.b2a_hex(os.urandom(24))
#notify = smtp

#[server]
#listen = http://127.0.0.1:2705
#reload = off
#profile = off

[moderation]
enabled = true

URL: http://habla.ardervegan.info

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.