telnet
Version, currently 1.0.23 versions
- 1.0.2latestMar 22, 2021
- 1.0.1not indexedMay 26, 2021
- 1.0.0not indexedMay 26, 2021
github.com/spider-gazelle/telnet.cr
Telnet protocol helper for crystal lang
11 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
telnet:
github: spider-gazelle/telnet.cr
version: ~> 1.0.2Then run:
shards installshard.yml
- Crystal
>= 0.34.0
Dependencies
Development Dependencies
- ameba*github: veelenga/amebadev
Documentation
Generated from the source of the current release. The first visit to a release that has never been documented starts its build.
README
# Telnet
[](https://travis-ci.org/spider-gazelle/telnet.cr)
Telnet protocol support for Crystal Lang. Does not implement transport, just the raw protocol.
Usage
=====
There are three processes that need to implemented to talk to a Telnet device or service.
* Incoming data needs to be buffered, this handles protocol specific operations and unescapes incomming messages.
* A callback for sending protocol level responses to the far-end
* Preparing a message for transmission
```crystal
require "telnet"
telnet = Telnet.new do |cmd_response|
# This is a response to a request from the far end
# it should be transferred to the remote
end
# Buffer incoming data for unescaping and command processing
clear_text = telnet.buffer("a string or slice / Bytes")
# Prepare data for sending to the remote (i.e. the application level protocol)
# The prepare function adds the appropriate line endings, as per the telnet session negotiations
encoded_response = telnet.prepare("hello")
```
An example with the IO implemented properly
```crystal
require "telnet"
socket = TCPSocket.new("192.168.0.60", 23)
telnet = Telnet.new do |cmd_response|
# This is a response to a request from the far end
socket.write cmd_response
end
# Buffer incoming data for unescaping and command processing
encoded = socket.gets
clear_text = telnet.buffer(encoded)
# Prepare data for sending to the remote
encoded_response = telnet.prepare("hello")
socket.write encoded_response
```
If you are sending binary data to the remote you'll want to escape it
```crystal
data = Bytes[3, 255, 4, 40, 255, 30, 20]
encoded_response = telnet.prepare(data, escape: true)
socket.write encoded_response
encoded_response # => Bytes[3, 255, 255, 4, 40, 255, 255, 30, 20, 13, 10]
```
Links
This release
- Version
1.0.2- Tagged
- Mar 22, 2021
- Commit
aac947ed3b21- Crystal
>= 0.34.0- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/spider-gazelle/telnet.cr
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 3