From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id EDCF55D5 for ; Thu, 20 Jan 2022 20:56:20 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.88,303,1635199200"; d="scan'208";a="17121227" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 20 Jan 2022 21:56:20 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id DDA40E0154; Thu, 20 Jan 2022 21:56:19 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id B3916E00C9 for ; Thu, 20 Jan 2022 21:56:11 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=edwin+ml@etorok.net; spf=Pass smtp.mailfrom=edwin+ml@etorok.net; spf=None smtp.helo=postmaster@relay1-d.mail.gandi.net IronPort-SDR: lCX3lffX5p+DeXoRhBm7NhLSxnVLpYNZRIRmfuW+UmfeEDV7SUP8ZkKwzv6UkF6Ac0Q9HVgr5g aF+z9oZPhmiaotOXJxGb+3etcjxAXD1I//Oz+KY91TbiQ/BDGpnt8WB05TFRydN2bfUTraPbHC Oc+JI2Ejmm7+83SCtxITjXd8vAaSrrI99dFK7rqxImwy7TrF+Ww0d2dut4r+Ew/+4hTXpSb/gB XdpajGEuvU80ia/jkZ/4WWzE9uCd6Mut91qH8H/snPPYgxM0yIG7JWIsapcpaBt3Fnktp7T1fH iJxSbOLWFqvl27ssLoU+YeEB X-IPAS-Result: =?us-ascii?q?A0DMAgACzOlhh8G3RtlagQmBXIImflYsBAsxhEiOboIlA?= =?us-ascii?q?5xggWgLAQMBDTcEBgQBAYIQgnUCg1cCHQcBBDQTAQIEAQEBAQMCAwEBAQEBA?= =?us-ascii?q?QMBAQUBAQECAQECAwQBEwEBAQENCw4ICgcQEzxkZAMBgUsDAYF5BgQwDUABE?= =?us-ascii?q?AGBYymDZQECAyMPAQ0BASwMDwsYAgIIHgICVwYBLYJpAYMaC65OgTGBAYIIA?= =?us-ascii?q?QEGgT4BEwMYJkiFCQmBECoBhyuGDXonXIFNgRWCejA+hBABEgE2gwOCZZFmY?= =?us-ascii?q?hoeEQgIIjSBBAUjOA4BLgOfT6AMg0+KfJRVM4NxgUqRHpEblkQgih+CS4gSi?= =?us-ascii?q?2hIAYUUgXiBDXB7RYJpCRgtAQIBAg0BAgIDAQIBAgEIAQECAY41g1iEUQg7U?= =?us-ascii?q?YR5RDAaAR0CBgEKAQEDCYllhlUBAQ?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 k09ut5C/qGtaaNoplLw IronPort-HdrOrdr: A9a23:xY+1iq8/xlJqscNZ0JBuk+DVI+orL9Y04lQ7vn2ZLiYlFfBw9v re/sjzsCWftN9/YhAdcLy7V5VoBEm9yXcX2/h0AV7BZmTbUQKTRekI0WKh+UyCJ8SUzIJgPM lbHZSWROeAaGRHsQ== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.88,303,1635199200"; d="scan'208";a="3651739" X-MGA-submission: =?us-ascii?q?MDH5qagInz8gmcv+8RompkFmw+KZQJPpea2maa?= =?us-ascii?q?p4rFgeMt/USGl4c7OYuW6H5YWDn5n908zhU9aRk6CHtNc7AYRoNcw6Zr?= =?us-ascii?q?r9ORXs++ZoHkfNs6O7rBpXm/0sj2sG7FYKBlhHAyhYeOS6OGFSbDV2VU?= =?us-ascii?q?FciS9R+gaLXETRIfFWuHQ53g=3D=3D?= Received: from relay1-d.mail.gandi.net ([217.70.183.193]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2022 21:56:10 +0100 Received: (Authenticated sender: edwin@etorok.net) by mail.gandi.net (Postfix) with ESMTPSA id A9B5E240006; Thu, 20 Jan 2022 20:56:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etorok.net; s=gm1; t=1642712170; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Q3Ym0jI+PK3Z5yVv+3jFja594WgJygA1YS8V19iw8ZY=; b=jdo1GZ9dVXb+WOxQAecmrWzPuNH/N7Ph1YO8Rm0eo6DRbqBPKj3VteHqRqo835XgBqWogb 7ELoyaSfwyyiAW5+9bPmxeIwynCLa7iOnWn3L57R9XQuX1rumu90zRFGCOkl84wMrC/abq b7OHrUfs9VSvFKqmT+b0qqwIRuoAfoqAtbzQhnd2aI+2bzXjW9LDC58BKhh/nP7r+qb2+S mFPvnrpKieaT1n1W+cTQVlg9f0RQ2aouXKqaQtV7Yo8Kw6QHQN0BXnnmKRntTjT8f1/f6s uxBi+8x/sVqSdI9jjQQUCRBFkzvv4DKtkCmeO6/fb99K1Di2qX5x3SPE2P/RBQ== Message-ID: <03d64a08de39bf9d3eedb6515d567fb54d34a092.camel@etorok.net> From: Edwin =?ISO-8859-1?Q?T=F6r=F6k?= To: =?ISO-8859-1?Q?S=E9bastien?= Hinderer , caml-list@inria.fr Date: Thu, 20 Jan 2022 20:56:09 +0000 In-Reply-To: References: <23103341-7872-bc5b-d519-ecadce690d20@orbitalfox.eu> <20220116143149.mucve4i2dm2gvo3d@posteo.de> <714c3a8d-25c8-c91e-ae01-46bf00920ffd@baturin.org> <20220117143005.qso775afaro24bi4@posteo.de> <467aab49-e503-57e0-0799-a40a9c0b878d@baturin.org> <20220117173608.qpufro64pbpfny5z@posteo.de> <696b25b0-7567-0b1b-4203-9f53634ca998@orbitalfox.eu> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.3 (3.42.3-1.fc35) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: Re: [Caml-list] Ask questions on the mailing lists too Reply-To: Edwin =?ISO-8859-1?Q?T=F6r=F6k?= X-Loop: caml-list@inria.fr X-Sequence: 18680 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: On Wed, 2022-01-19 at 17:31 +0100, Sébastien Hinderer wrote: > Simon Cruanes (2022/01/18 15:55 +0000): > > [...] > > I don't know about registration > > though, it'd be good if there was a way to register purely by email > > to > > make it more accessible. For the rest, _once registered_, as far as > > I'm > > concerned, it's just a mailing list software. > > Well as was mentionned, the mailing-list mode needs to be enabled and > that seems to have accessibility issues. Here is a small python3 script that enables mailing list mode provided that you've got a live browser logged in to discuss.ocaml.org using Firefox, and that you have python3 and pip3 installed: pip3 install --user requests browser-cookie3 wget https://tinyurl.com/domett -O domett.py && python3 domett.py (If this doesn't work and fails on looking up the username from the headers it is possible that you've logged out in the browser at some point, closing and reopening the browser and logging in again might be a workaround) Discourse does have APIs for various things, including tweaking preferences, but unfortunately not for changing mailing list mode: https://docs.discourse.org/ For any endpoint that is not documented they suggest reverse engineering it (https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576) which I've done. However we still need to present some form of authentication, I was thinking about API keys, but they're normally for admins only, and the user-API keys appear to need a webservice to talk to https://meta.discourse.org/t/user-api-keys-specification/48536 You've mentioned that you were able to log in with your browser, so the above Python3 script loads the cookies from the live browser, does a request to get the CSRF token, and then makes a PUT request to change mailing list mode settings. This is similar to what discourse itself would've done if you clicked through things in the web browser. (I thought of using Mechaml to write it, but python has a convenient way of loading the cookies from the cookies.sqlite and mechaml doesn't yet). Here is the python3 script in its entirety if it is easier to run from the email than from the tinyurl. In theory it should work on other discourse sites, so it might be possible to adapt this to register on meta.discourse.org (although the email traffic from that would probably be too large and should instead subscribe only to a particular topic). Is is far from ideal, but it might provide you a way to read and participate in discussions until a better solution is found: --- CUT HERE --- #!/usr/bin/env python3 import browser_cookie3 import requests import logging logging.basicConfig(level=logging.DEBUG) logging.debug("About to load Firefox cookiejar") BASE = "https://discuss.ocaml.org" cookiejar = browser_cookie3.firefox(domain_name="discuss.ocaml.org") logging.debug("Got cookies: %r" % ([c.name for c in cookiejar])) s = requests.Session() s.cookies = cookiejar reply = s.get("%s/session/csrf" % BASE, headers={"X-Requested-With": "XMLHttpRequest"}) csrf = reply.json()['csrf'] logging.debug("Got CSRF token") username = reply.headers["x-discourse-username"] logging.info("Got username %s" % username) data = { "mailing_list_mode": "true", # "mailing_list_mode": "true", "mailing_list_mode_frequency": "1", "email_digests": "true", "email_in_reply_to": "true", "email_messages_level": "0", "email_level": "0", "email_previous_replies": "1", "digest_after_minutes": "10080", "include_tl0_in_digests": "true", } logging.info("About to set mailing list mode to %s" % data["mailing_list_mode"]) headers = { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "X-CSRF-Token": csrf, } reply = s.put("%s/u/%s.json" % (BASE, username), data=data, headers=headers) json = reply.json() if 'success' in json: logging.info(json['success']) else: logging.error(json) --- CUT HERE --- Hope this helps, --Edwin