<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mobius/hotline, branch main</title>
<subtitle>Friendship Quest remix of mobius, a hotline server in go #cli</subtitle>
<id>https://git.r.bdr.sh/mobius/atom/hotline?h=main</id>
<link rel='self' href='https://git.r.bdr.sh/mobius/atom/hotline?h=main'/>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/'/>
<updated>2025-11-27T23:39:17Z</updated>
<entry>
<title>Merge branch 'master' of https://github.com/jhalter/mobius</title>
<updated>2025-11-27T23:39:17Z</updated>
<author>
<name>Ruben Beltran del Rio</name>
<email>git@r.bdr.sh</email>
</author>
<published>2025-11-27T23:39:17Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=9f67542d8469db45c823e347b1868b3582d9e5a7'/>
<id>urn:sha1:9f67542d8469db45c823e347b1868b3582d9e5a7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add TLS port field to tracker registration protocol</title>
<updated>2025-11-25T18:31:39Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-25T18:30:30Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=8ddb9bb228389b198a76d6df21de005da4fad66b'/>
<id>urn:sha1:8ddb9bb228389b198a76d6df21de005da4fad66b</id>
<content type='text'>
Repurpose the previously unused 2-byte field in the tracker protocol to advertise the server's TLS port. This allows clients to discover which servers support TLS connections.

Note: currently only the official, original, 1990's Tracker software sends this server provided 2-byte field to tracker clients.  I'm adding this to Mobius in the hope that the modern day trackers might update their behavior to match the original software, which would put these unused 2 bytes to a useful purpose.
</content>
</entry>
<entry>
<title>Fix tracker server list parsing for batched responses</title>
<updated>2025-11-25T00:52:37Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-25T00:52:37Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=ab16c7d82c8381a4df80fef4b2fe81e7ff23dad8'/>
<id>urn:sha1:ab16c7d82c8381a4df80fef4b2fe81e7ff23dad8</id>
<content type='text'>
The tracker protocol splits large server lists into batches, with each
batch preceded by a ServerInfoHeader. Previously, GetListing only read
the initial header and failed when encountering subsequent headers
mid-stream, causing the scanner to misinterpret header bytes as server
record data.

Changes:
- Refactored GetListing to use bufio.Reader instead of bufio.Scanner
  to handle heterogeneous data (headers and server records)
- Added readServerRecord helper function for sequential reading
- Renamed ServerInfoHeader.SrvCountDup to BatchSize for clarity
- Added comprehensive documentation explaining the batching protocol
- Removed unused serverScanner function and tests
- Added table tests covering multiple batch scenarios

The BatchSize field indicates the number of servers in the current
batch, while SrvCount indicates the total across all batches.
</content>
</entry>
<entry>
<title>Add optional TLS support for encrypted client connections</title>
<updated>2025-11-23T03:43:12Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-23T03:42:32Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=357baa94bf9b1d4b623f8a9c04b9d591e9f60406'/>
<id>urn:sha1:357baa94bf9b1d4b623f8a9c04b9d591e9f60406</id>
<content type='text'>
- Add TLSConfig and TLSPort fields to Server struct
- Add WithTLS option function for configuration
- Add ServeWithTLS and ServeFileTransfersWithTLS methods
- Update ListenAndServe to start TLS listeners when configured
- Add -tls-cert, -tls-key, -tls-port command-line flags
- Fix data race in rateLimiters map access with mutex
- Add TLS documentation with certificate generation instructions
</content>
</entry>
<entry>
<title>Fix error when downloading incomplete files</title>
<updated>2025-11-20T00:36:06Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-20T00:36:06Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=1b2df8a630bfc83304ef90610bdf7ebe91d4e555'/>
<id>urn:sha1:1b2df8a630bfc83304ef90610bdf7ebe91d4e555</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename hotline.fileWrapper struct to hotline.File</title>
<updated>2025-11-19T05:01:55Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-19T05:01:55Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=b395859da4937fa4c3064f4e022e46690df8f2d4'/>
<id>urn:sha1:b395859da4937fa4c3064f4e022e46690df8f2d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace hardcoded magic values with named constants and improve type safety</title>
<updated>2025-11-19T04:56:12Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-19T04:56:12Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=489e26d1b3c224beffba2649406efd83580989fe'/>
<id>urn:sha1:489e26d1b3c224beffba2649406efd83580989fe</id>
<content type='text'>
Adds new constants for file format identifiers (FormatFILP), fork types
(ForkTypeINFO), and platform identifiers (PlatformAMAC, PlatformMWIN) to
improve code maintainability and readability. Changes FlatFileForkHeader.ForkType
field from [4]byte to ForkType type alias for better compile-time type checking,
matching the pattern used in ForkInfoList.Fork.
</content>
</entry>
<entry>
<title>Add support for GIF banners with validation and improved error messages</title>
<updated>2025-11-19T03:52:02Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-11-19T03:51:02Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=16f0a8527a0b9b736afbd4e71e6aac55e31b60e8'/>
<id>urn:sha1:16f0a8527a0b9b736afbd4e71e6aac55e31b60e8</id>
<content type='text'>
- Add custom validator for banner file extensions (.jpg, .jpeg, .gif)
- Update HandleTranAgreed to dynamically detect banner type from file extension
- Export FileTypeFromFilename function for use across packages
- Add comprehensive test coverage for banner validation and type detection
- Improve error messages to clearly communicate allowed file extensions
</content>
</entry>
<entry>
<title>Add ForkType type alias for improved type safety</title>
<updated>2025-07-06T23:02:53Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-07-06T23:02:53Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=e61b3160bc8936b7ffb0af5c89b13742a7081826'/>
<id>urn:sha1:e61b3160bc8936b7ffb0af5c89b13742a7081826</id>
<content type='text'>
- Replace [4]byte with ForkType in ForkInfoList struct
- Update constants ForkTypeDATA and ForkTypeMACR to use ForkType
- Add String() method to ForkType for better debugging
- Improve consistency with existing type patterns (FieldType, TranType)
- Clean up unused code and improve documentation
</content>
</entry>
<entry>
<title>Fix string splitting bug and add comprehensive tracker registration tests</title>
<updated>2025-07-05T23:02:33Z</updated>
<author>
<name>Jeff Halter</name>
<email>868228+jhalter@users.noreply.github.com</email>
</author>
<published>2025-07-05T23:02:33Z</published>
<link rel='alternate' type='text/html' href='https://git.r.bdr.sh/mobius/commit/?id=cab4e2192d5b39e51933ced3dd569de9fc182a04'/>
<id>urn:sha1:cab4e2192d5b39e51933ced3dd569de9fc182a04</id>
<content type='text'>
- Fix critical bug in tracker address parsing: strings.Split(t, ":") instead of strings.Split(":", t)
- Add dependency injection for TrackerRegistrar to improve testability
- Extract registerWithAllTrackers() helper function to eliminate code duplication
- Add comprehensive test suite covering:
  * Unit tests for parseTrackerPassword with edge cases and special characters
  * Integration tests for registerWithTrackers with mocking
  * Context cancellation and graceful shutdown testing
  * Error handling for network failures and malformed addresses
  * Edge cases like zero ports, long names, and empty configurations
- Improve password parsing to handle colons in passwords correctly
- Add MockTrackerRegistrar for isolated testing without network dependencies

The string splitting bug would have prevented tracker registration from working
with password-protected trackers. All tests pass and verify the fix works correctly.
</content>
</entry>
</feed>
