#Goophy DevLog ๐Ÿงต
---------------------------------
First steps of a pet project of mine. A Gopher server in C called Goophy. I'm making it for educational purposes and to use it myself in the (near?) future.

The test client is elpher a gopher / gemini client for emacs.

#gopher #GopherProtocol #cprogramming #c #elpher #SmallWeb

More progress done. Some code refactor here and there, some security things like avoiding access to not authorized files and paths, gophermaps already supported... not bad at all ๐Ÿค“

Funny story of the day: I was testing the program and I was excited because everything worked fine. Suddenly I realized a thing was working but it shouldn't. Why was it working? ๐Ÿค” Because the data I was using didn't cover that specific use case yet ๐Ÿ˜…

#gopher #GopherProtocol #cprogramming #c #SmallWeb #selfhosted

You know you're not making any progress if you don't get a Segmentation Fault once in a while ๐Ÿ˜… ๐Ÿ˜‚

#c #programming #cprogramming

You also know you're making progress when valgrind output looks like this:

==32514== All heap blocks were freed -- no leaks are possible
==32514==
==32514== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Stay tuned, later in the day I'll show you current project status ๐Ÿ˜‰

#c #programming #cprogramming #valgrind

As promised, here we go: #Goophy in action. As you can see it's approaching an usable status.

Next steps: refactor more code, add a logging system and start my own gopherhole to test it in a real case scenario.

#gopher #GopherProtocol #cprogramming #c #Internet #selfhosted

Today there was not much progress. A bit of refactor and handling returning errors to the connected client in case of malformed requests, not found paths, and the like. Anyway little progress is better than no progress.

#Goophy #programming #progress

Fixed my very first "buffer underflow" since the 90s ๐Ÿ˜…, refactored and improved code readability, doc comments, etc. I'm quite happy with the current status.

Next step: adding the logging system and removing all the debugging prints. Maybe I'll continue later, who knows... ๐Ÿค“ ๐Ÿ˜†

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog #selfhosted

First version of the logging system almost finished. I have to fix a few formatting things but I have a working logfile. Almost all of the debug printf have disappeared ๐Ÿ˜‰

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog #selfhosted

Finally I have a working logging system. Yesterday I had almost completed a first version but today I thought, wouldnโ€™t it be better ifโ€ฆ? And I jumped at it ๐Ÿ˜…

There is room for improvement but I'm quite happy with it right now. I hope to have my private beta ready this week.

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog #selfhosted

Today I'm working on a config file system for the server. We will see how it goes ๐Ÿค“

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

Mission accomplished!
Config file works as expected and with this I'm ready for a first private beta ๐Ÿฅณ

Next step: installing NetBSD on my Raspberry Pi 2 for putting this online and see what happens ๐Ÿ˜‰

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog #selfhosted #NetBSD #RaspberryPi

Yesterday it was a lot of fun. I installed NetBSD on the Raspberry Pi 2 you see below. This machine is going to be the server for the beta testing of the project. There is a small thread on this here:
https://hostux.social/@lfa/115072908838339673

I recompiled Goophy directly on the Pi and I also installed Lagrange on my desktop to test everything with a second client. Devuan has no package for Lagrange so I built it from sources.

#Goophy #gopher #GopherProtocol #NetBSD #runbsd #RaspberryPi #Lagrange #Devuan

A new gopher hole and gopher server are born!! ๐ŸŽ‰

Finally the first private beta of Goophy is up and running on the Raspberry Pi with NetBSD. You can check it out with your favorite gopher client at:
gopher://lucio.albenga.es

I promise I'll put more content in the following days, but right now I'm excited to have it online ๐Ÿ˜… Let me know if you find any bugs.

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog #selfhosted #gopherhole #NetBSD

After almost 2 days online I can say that Goophy is doing well. I already have my gopherhole with more content online and I made it bilingual English / Spanish but I don't plan to keep 1-1 translations of everything. We will see.

Some screenshots below for showing it up & running. The client used is Lagrange Gemini / Gopher client.

You can visit my gopherhole at gopher://lucio.albenga.es

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog #selfhosted #gopherhole #lagrange

Currently I already found some new features I want to add and some fixes to do but all in all I'm happy with this first beta version ๐Ÿ˜€

#Goophy #gopher #GopherProtocol #devlog

This morning I found out that #Goophy was down. Checking the logs in search of bugs to fix ๐Ÿ˜…

In the meantime I restarted the server and is working right now

Working on fixing and improving things on Goophy. Time for another coffee. After all programming is the process of inputting caffeine and outputting software โ˜• โžก๏ธ ๐Ÿง  โžก๏ธ ๐Ÿ–ฅ๏ธ ๐Ÿ˜†

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

New versiรณn of Goophy up and running my gopher hole.

Today:
- Fixed a few bugs. I hope it will no longer dies. Ok it only happened twice, but one time is already too much for my taste ๐Ÿ˜…
- Improved the logs
- Allowed some requests to pass, according to what I've seen in the logs.
- Improved requests validation according to what I've seen in the logs. Requests like http are detected early so there is less waste of resources.

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

Time to resume the development of this project. @venelles was very kind and sent me some reports these last few days and I'm going to tackle them. It seems that Goophy is too attached to the RFC and when a request doesn't end with cr-lf it returns an error. I'm going to make it less picky ๐Ÿ˜‰

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

In the end it seems it wasn't about line endings but about getting the network request in full ๐Ÿ˜…

- Ensured the request gets read in full when the network lags.
- Improved logging messages for the DEBUG log level.

New version up and running ๐Ÿคž

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

Today @venelles did more testing with different clients and we found out that there was also the problem with the line endings. I made Goophy less picky and it seems that everything works like a charm right now.

Thanks a lot @venelles for all the support and your great work testing Goophy ๐Ÿ™‚

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

In the end it was a bug in Chawan the reason of the wrong line endings. I reverted Goophy to the previous version in order to make possible to test the Chawan bugfix and I decided to leave Goophy with the request ending according to the RFC because I think it will be useful for other Gopher client devs.

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

Little by little I keep improving and adding things to Goophy. Right now I'm not in my best mood so I'm doing small things but it's better than nothing. Today I did minor code improvements here and there and refactored the function that sends the response to the client.

New version up & running on my Gopher hole. If you find any problems on it, let me know. Thanks ๐Ÿ™‚

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

I've found a use to the bad bots that scrape the internet 24/7. Finally my friends from China managed to break Goophy ๐Ÿ˜†

Because of it I've discovered a bug managing the max connections of the server. I knew I have a bug somewhere and I was waiting to find and fix it before continue to add new features and improvements. New version up and running. Let's see if my testers from China will find something else ๐Ÿ˜‚

#Goophy #gopher #GopherProtocol #cprogramming #c #programming #devlog

@lfa I used to run a bilingual French/English web site but I gave up, too much to manage for a site only read by crawlers ๐Ÿ˜‚
I just added a google translate link. Hmm.. I wonder if something like that exists for gopher ๐Ÿค”
@venelles Not pretending to do 1-1 translations relieves a lot of the burden for me but, as I said, we will see ๐Ÿ˜…

@lfa k soโ€ฆ I just started reading this thread

Is it still a gopher thing