Skip to content

"Cooked" onion service APIs

Projects embedding Arti need higher level onion svc APIs

2024-04-04 19:06:36	gabi	I wonder if we need a more cooked API for all of this.. Let us know what you come up with 
2024-04-04 19:06:48	gabi	maybe it's something that belongs in arti
2024-04-04 19:06:59	+richard	it's a lot lower level then i was expecting but i think i can make it work
2024-04-04 19:07:06	gabi	yeah, it's very fiddly :/
2024-04-04 19:07:10	+richard	oh one final q!
2024-04-04 19:07:22	+richard	how do we map 'nicknames' to Keystore arti_path's ?
2024-04-04 19:07:37	+richard	or rather where do i need to go look to find that
2024-04-04 19:09:02	gabi	arti reads the service nickname from the config. In the example config, you have sections like [onion_services."allium-cepa"], where "allium-cepa" is the nickname
2024-04-04 19:09:56	gabi	in the code that's OnionServiceConfig::nickname
2024-04-04 19:10:12	+dan_b	yeah as per the cwtch connectivity package, we mistly just need bootstrap(), restart(), open() listen() both of the last two just returning sockets we can work with
2024-04-04 19:10:31	+dan_b	and like shutdown() lol
2024-04-04 19:10:42	+dan_b	we had managed tor by generating torrcs 
2024-04-04 19:10:55	gabi	the nickname is just an arbitrary string with a restricted charset. We use that to build the ArtiPath of each key (an ArtiPath is a string that identifies a key. We also use it to build the on-disk paths)
2024-04-04 19:11:19	+dan_b	but all that has by default is: SocksPort, OnionTrafficOnly, ControlPort, and HashedControlPassword
2024-04-04 19:11:52	gabi	bootstrap(), restart(), open() listen()> what would listen() return? The stream and the local socket it needs to be forwarded to?
2024-04-04 19:11:58	+dan_b	so yeah we'd give a thumbs up to a pretty higher level API 👍
2024-04-04 19:12:07	gabi	ack
2024-04-04 19:12:43	gabi	s/what would listen() return/what would the stream returned by listen() return
2024-04-04 19:12:44	+dan_b	our ListenService interface that just has Accept() -> net.Conn and Close()
2024-04-04 19:12:58	+dan_b	and Open return a socket
2024-04-04 19:13:02	+dan_b	https://git.openprivacy.ca/openprivacy/connectivity/src/branch/master/acn.go
2024-04-04 19:13:09	+dan_b	there's the two interfaces
2024-04-04 19:13:27	+dan_b	we run cwtch on top of that, and then have the bine/tor implementation providing that
2024-04-04 19:14:32	gabi	I see. I'll open a ticket...