Other than setting up my own INN in a virtual machine, I do not know
how to "practice" my own client. Do Usenet providers frown upon
practice clients, such as Eternal September?
Are there still extant C libraries that implement NNTPI'm not a C guy but as C is old as nntp i bet you'll find something?
and are useful for creating Usenet clients?What kind of client?
1) how would I start experimenting on my own?
Do Usenet providers frown upon practice clients, such as EternalSeptember?
practicing all the intricacies of SSL verification
Dear n.s.nntp,
Are there still extant C libraries that implement NNTP, and are
useful for creating Usenet clients?
I am aware of UW's c-client, currently hidden inside Alpine sources,
but I have not found it to be a really useful framework for building
my own news reader.
My question is really twofold.
1) Is there a library that already does this and can be used with SSL?
2) In the absence of 1) how would I start experimenting on my own?
Other than setting up my own INN in a virtual machine, I do not know
how to "practice" my own client. Do Usenet providers frown upon
practice clients, such as Eternal September?
And even with my own INN in a VM, I'm still not sure how to go about practicing all the intricacies of SSL verification, without a publicly available news server [possibly my own] and something like letsencrypt.
Am I perhaps overthinking this, and this is rather easy?
On Sep 5, 2023 at 10:06:46 AM CDT, "Johann 'Myrkraverk' Oskarsson" <johann@myrkraverk.invalid> wrote:
Other than setting up my own INN in a virtual machine, I do not know
how to "practice" my own client. Do Usenet providers frown upon
practice clients, such as Eternal September?
You're welcome to experiment with NNTP commands and clients using my server (news.blueworldhosting.com).
I don't think Usenet clients identify themselves through NNTP commands, some may add headers to messages they compose, but I don't believe the protocol specification has anything for identifying clients like the HTTP User Agent.
On 05.09.23 17:06, Johann 'Myrkraverk' Oskarsson wrote:
Are there still extant C libraries that implement NNTPI'm not a C guy but as C is old as nntp i bet you'll find something?
and are useful for creating Usenet clients?What kind of client?
a reader or a binary downloader?
1) how would I start experimenting on my own?
https://datatracker.ietf.org/doc/html/rfc3977
Do Usenet providers frown upon practice clients, such as EternalSeptember?
Paid providers mostly don't care. private ones may do better in banning
you for doing stupid stuff.
please try only with your localhost. inn is enough.
practicing all the intricacies of SSL verification
SSL(-lib) is only a wrapped around layer to a tcp connection which in
case of NNTP sends/receives commands and data via text or 'line1\r\nline2\r\n.'
why use C?
On Sep 5, 2023 at 10:06:46 AM CDT, "Johann 'Myrkraverk' Oskarsson" <johann@myrkraverk.invalid> wrote:
Dear n.s.nntp,
Are there still extant C libraries that implement NNTP, and are
useful for creating Usenet clients?
I am aware of UW's c-client, currently hidden inside Alpine sources,
but I have not found it to be a really useful framework for building
my own news reader.
My question is really twofold.
1) Is there a library that already does this and can be used with SSL?
2) In the absence of 1) how would I start experimenting on my own?
Other than setting up my own INN in a virtual machine, I do not know
how to "practice" my own client. Do Usenet providers frown upon
practice clients, such as Eternal September?
And even with my own INN in a VM, I'm still not sure how to go about
practicing all the intricacies of SSL verification, without a publicly
available news server [possibly my own] and something like letsencrypt.
Am I perhaps overthinking this, and this is rather easy?
Not a developer, but did some looking around and found that libwww by W3C contains a NNTP implementation that may be useful:
https://www.w3.org/Library/src/WWWNews.html
You can find the original NNTP 'reference implementation' sources at:
ftp://ftp.dinoex.org/pub/c-news/nntp.1.5.12.2.tar.gz
or
http://mirror.its.dal.ca/freebsd/distfiles/nntp.1.5.12.2.tar.gz
(don't forget the Y2k patch) http://mirror.its.dal.ca/freebsd/distfiles/nntp-patch-y2k
The reason I want to use C, is to build something that potentially can
work for everyone, including VAX/VMS, [MS|PC|Free]DOS, Amiga -- or the
more modern Vampire -- as well as the current operating systems we use
from day to day in the real world, far into the future.
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
The reason I want to use C, is to build something that potentially can
work for everyone, including VAX/VMS, [MS|PC|Free]DOS, Amiga -- or the
more modern Vampire -- as well as the current operating systems we use
from day to day in the real world, far into the future.
Writing portable C that will work on all of those platforms will be a significant challenge, particularly for the NNTP protocol which requires dealing with the networking stack, which in turn is quite different across that spectrum of operating systems if I recall correctly.
Given that portability desire, you're probably better off writing your
client in Python, since other folks have done the Python porting work for you.
On 9/6/2023 5:59 AM, Jesse Rehmer wrote:
Not a developer, but did some looking around and found that libwww by W3C
contains a NNTP implementation that may be useful:
https://www.w3.org/Library/src/WWWNews.html
You can find the original NNTP 'reference implementation' sources at:
ftp://ftp.dinoex.org/pub/c-news/nntp.1.5.12.2.tar.gz
or
http://mirror.its.dal.ca/freebsd/distfiles/nntp.1.5.12.2.tar.gz
(don't forget the Y2k patch)
http://mirror.its.dal.ca/freebsd/distfiles/nntp-patch-y2k
Thank you, that seems extremely useful, if only to learn from the code
before I implement my own.
There are plenty of cross-platform programs that use networking, written
in C. From the X window system to this lightweight encryption library (perhaps useful to the OP if they're interested in NNTPS?): https://github.com/classilla/cryanc
Far be it from me to discourage anyone else's hobbies, but if your hobby
is writing a portable NNTP library for that range of platforms in C, your hobby is actually porting C to obscure platforms. The NNTP stuff is going
to be a very tiny part of the project. :)
I believe you're vastly overestimating the effort of writing portable C network code. C network libraries exist for this purpose, the two I can
name at the top of my head are NSPR and SDL_net. The former is still
used by Firefox, and at one time worked on RISC OS too. I off hand
don't recall if it worked on VMS before.
On the subject of Python, I fear, based on my own experience and others'
that it isn't the panacea [some people|you] think it is. Mostly, what frustrates people these days is that tested and working code isn't work-
ing anymore, because it isn't pythonic enough two to five years
later.
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
I believe you're vastly overestimating the effort of writing portable C
network code. C network libraries exist for this purpose, the two I can
name at the top of my head are NSPR and SDL_net. The former is still
used by Firefox, and at one time worked on RISC OS too. I off hand
don't recall if it worked on VMS before.
NSPR was ported to OpenVMS once, in the sense that an OpenVMS developer
got it to build but no one else was able to reproduce that, more than ten years ago. It almost certainly no longer works there.
Anyway, it's probably pointless to argue about this. I said my piece
based on my own experience with maintaining portable C code, which is
worth exactly what you paid for it. I gave the warning that I would have appreciated at various points in my own past; whether that's useful to
anyone else is entirely up to them. Far be it from me to discourage other people's quixotic hobbies; I have a large collection of my own.
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
On the subject of Python, I fear, based on my own experience and others'
that it isn't the panacea [some people|you] think it is. Mostly, what
frustrates people these days is that tested and working code isn't work-
ing anymore, because it isn't pythonic enough two to five years
later.
This is also quite famously true of C code due to increasingly aggressive optimization passes that depend more on the formal semantics of C that are often not followed by real-world code. Linus Torvalds complains about it
all the time. (There of course are good arguments about which language is more vulnerable to this, and to some extent it depends on what you're
doing in the language. Certainly the Python 3 transition was a huge, disruptive change unlike anything that C has gone through;
You are absolutely right, but the Python 3 transition happened fifteen
years ago now. The claim above that things have massively changed to
break working code in the last "two to five years" is ... difficult to reconcile with reality.
I personally seem to have
very good luck; both my Python code and my C code seems to rarely be
affected by this stuff.
Hi Russ,
I personally seem to have very good luck; both my Python code and my
C code seems to rarely be affected by this stuff.
Same thing for me as for the Python scripts and the web site in Python
(using mod_wsgi) I wrote. The transition to Python 3 was easy. The
only problem I ran into was to properly handle the literal strings
that are taken as Unicode code points by default, contrary to Python
2. Once that mechanism is understood, decoding/encoding at the right
places is easy.
Same thing for me as for the Python scripts and the web site in Python
(using mod_wsgi) I wrote. The transition to Python 3 was easy. The
only problem I ran into was to properly handle the literal strings
that are taken as Unicode code points by default, contrary to Python
2. Once that mechanism is understood, decoding/encoding at the right
places is easy.
The C API changed a fair bit, with some things going away completely and needing to be replaced. i.e extension module authors had a bit more work
to do than people working in pure Python.
It’s “easy” in the sense that if you have the skills to write the software in the first place, the NNTP protocol itself is not going to
give you difficulty. What I spent the bulk of my time on was everything
that happens before and after the data transfer. Heaven help you if
you’re looking to make something with multipart binary support . . .
Dear n.s.nntp,
Are there still extant C libraries that implement NNTP, and are
useful for creating Usenet clients?
2) In the absence of 1) how would I start experimenting on my own?
Am I perhaps overthinking this, and this is rather easy?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 498 |
Nodes: | 16 (2 / 14) |
Uptime: | 03:22:05 |
Calls: | 9,821 |
Calls today: | 9 |
Files: | 13,757 |
Messages: | 6,190,389 |