All Projects → zachflower → tcpcv

zachflower / tcpcv

Licence: MIT license
💻 TCPCV is a retro-style, text-based server for hosting your résumé.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to tcpcv

udp2raw
A Tunnel which Turns UDP Traffic into Encrypted UDP/FakeTCP/ICMP Traffic by using Raw Socket,helps you Bypass UDP FireWalls(or Unstable UDP Environment)
Stars: ✭ 5,256 (+14917.14%)
Mutual labels:  tcp
im-bass
基础IM通信
Stars: ✭ 56 (+60%)
Mutual labels:  tcp
twjitm-core
采用Netty信息加载实现长连接实时通讯系统,客户端可以值任何场景,支持实时http通讯、webSocket通讯、tcp协议通讯、和udp协议通讯、广播协议等 通过http协议,rpc协议。 采用自定义网络数据包结构, 实现自定义网络栈。
Stars: ✭ 98 (+180%)
Mutual labels:  tcp
Vaser
Vaser is a powerful high performance event based network engine library for C# .Net. It’s possible to start multiple servers in one program and use the same network code for all servers. In the network communication are all strings are omitted, instead it is based on a unique binary identifier, which the CPU and memory relieves massively.
Stars: ✭ 23 (-34.29%)
Mutual labels:  tcp
neteng-roadmap
Network Engineering at Scale Roadmap/Landscape
Stars: ✭ 53 (+51.43%)
Mutual labels:  tcp
jwEngine
A cross-platform C++<->lua server quick solution
Stars: ✭ 226 (+545.71%)
Mutual labels:  tcp
python-holdup
A tool to wait for services and execute command. Useful in Docker containers.
Stars: ✭ 29 (-17.14%)
Mutual labels:  tcp
DatagramTunneler
Simple C++ cross-platform client/server app forwarding UDP datagrams through a TCP connection.
Stars: ✭ 116 (+231.43%)
Mutual labels:  tcp
epoller
epoll implementation for connections in Linux, MacOS and Windows
Stars: ✭ 58 (+65.71%)
Mutual labels:  tcp
ComputerNetworks-unipd2018
Tips and resources to easily pass the "Computer Networks" practical exam ("Reti di calcolatori") in Padua
Stars: ✭ 21 (-40%)
Mutual labels:  tcp
easytcp
✨ 🚀 EasyTCP is a light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful.
Stars: ✭ 416 (+1088.57%)
Mutual labels:  tcp
Mgx
🌈 A high performance network framework written in c++ (support tcp and http)
Stars: ✭ 15 (-57.14%)
Mutual labels:  tcp
createprocess-windows
A complete, robust command-line utility to construct highly customized calls to the CreateProcess() Windows API. Released under a MIT or LGPL license.
Stars: ✭ 74 (+111.43%)
Mutual labels:  tcp
asyncio-socks-server
A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio.
Stars: ✭ 154 (+340%)
Mutual labels:  tcp
Socketify
Raw TCP and UDP Sockets API on Desktop Browsers
Stars: ✭ 67 (+91.43%)
Mutual labels:  tcp
swagger routerl
Routing library that generate the routing table from swagger.yaml.
Stars: ✭ 14 (-60%)
Mutual labels:  tcp
SocketIOUnity
A Wrapper for socket.io-client-csharp to work with Unity.
Stars: ✭ 69 (+97.14%)
Mutual labels:  tcp
dats
📈 Minimalistic zero-dependencies statsd client for Node.js
Stars: ✭ 63 (+80%)
Mutual labels:  tcp
Magician
Magician is a small HTTP service package based on Netty that makes it very easy to start an http service, and also supports WebSocket, using annotated configuration Handler, If you want to develop an http service with netty but find it cumbersome, then Magician may help you.
Stars: ✭ 97 (+177.14%)
Mutual labels:  tcp
TCP BBR
BBR implementation and research resources
Stars: ✭ 43 (+22.86%)
Mutual labels:  tcp

TCPCV

build npm npm

TCPCV is a retro-style, text-based server for hosting your resume. For absolutely no practical reason, you can make your resume accessible in the most obsolete of ways: via Telnet.

Note: It is entirely possible that Telnet is not installed by default on some modern operating systems—for good reason, probably. However, it stands to reason that if someone is actually going to try and read a resume via Telnet, they are comfortable enough with technology to figure out how to install it too.

TCPCV demo

tl;dr

If you want to skip all of the pesky requirements, installation steps, and configuration details, then using TCPCV can be broken down into two major steps:

Start TCPCV

On the server that you wish to host TCPCV on:

$ tcpcv --resume=<path-to-resume.json> --port=<port> --motd=<motd>

Example

$ tcpcv --resume=resume.json --port=2468 --motd="John Doe"

Connect to TCPCV

On a client you wish to connect to TCPCV from:

$ telnet <address-of-tcpcv-server> <port>

Example

$ telnet 192.168.1.1 2468

Requirements

TCPCV has been tested with the following dependencies:

  • Node.js v10+

Installation

npm install --global tcpcv

Usage

$ tcpv --help

  TCPCV is a retro-style, text-based server for hosting your resume

  Usage:
    tcpcv [options]

  Options:
    --help            Display this help message
    --motd[=MOTD]     The hero text to display on connection (default: TCPCV)
    --port[=PORT]     The port to listen on (default: 2468)
    --resume[=RESUME] Path to the resume file (default: resume.json)
    --version         Display this application version

--motd[=MOTD]

By default, when a user connects to a TCPCV server, they are greeted with a generic hero text that we are calling our MOTD. It looks something like this:

  _____ ____ ____   ______     __
 |_   _/ ___|  _ \ / ___\ \   / /
   | || |   | |_) | |    \ \ / /
   | || |___|  __/| |___  \ V /
   |_| \____|_|    \____|  \_/

The --motd option can be used to override this text. For example, --motd="Jean-Luc Picard" would change the MOTD to this:

      _                        _                 ____  _                   _
     | | ___  __ _ _ __       | |   _   _  ___  |  _ \(_) ___ __ _ _ __ __| |
  _  | |/ _ \/ _` | '_ \ _____| |  | | | |/ __| | |_) | |/ __/ _` | '__/ _` |
 | |_| |  __/ (_| | | | |_____| |__| |_| | (__  |  __/| | (_| (_| | | | (_| |
  \___/ \___|\__,_|_| |_|     |_____\__,_|\___| |_|   |_|\___\__,_|_|  \__,_|

Note: Keep in mind that the MOTD is not word-wrapped, so use your best judgement when deciding on its length.

--port[=PORT]

TCPCV is hosted on port 2468 by default, however this can be overridden with the --port option. Keep in mind that any port under 1024 is considered a system port, and will require root and is highly discouraged.

Note: It may be tempting to bind TCPCV to port 23, the default Telnet port, however at this time TCPCV does not properly handle IAC commands, which will result in some unexpected behavior. If you'd like to add IAC support, please open a pull request.

--resume[=RESUME]

Without a resume, TCPCV would be effectively useless, so the --resume option is by far the most important. By default, this will look for a file called resume.json in the current directory, however you can override the path using this option. See below more information about the resume.json file format.

Configuration

By default, TCPCV expects a resume.json file in the executing directory to fill out the resume details. At its core, this file allows you to define an arbitrary number of sections—with two different section formats—giving you the flexibility to display the information that you care about. As an example, let's take a look at the resume.example.json file in this repository:

{
  "sections": {
    "info": {
      "title": "Info",
      "description": "Personal information",
      "data": [
        "Name: Jean-Luc Picard",
        "Email: [email protected]",
        "Tea: Earl Grey, Hot"
      ]
    },
    "education": {
      "title": "Education",
      "description": "Education history",
      "data": [
        {
          "header": [
            "Starfleet Academy",
            "San Francisco, United Earth"
          ],
          "subheader": [
            "Officer",
            "2323 - 2327"
          ]
        }
      ]
    },
    "employment": {
      "title": "Employment",
      "description": "Employment history",
      "data": [
        {
          "header": [
            "Starfleet",
            "San Francisco, United Earth"
          ],
          "subheader": [
            "Captain",
            "2333 - 2379"
          ],
          "body": "Ascended from bridge officer to captain on the USS Stargazer. Commanded the Stargazer for two decades. Creator of the \"Picard Maneuver.\" Commanded the USS Enterprise-D and Enterprise-E, exploring the great, unexplored mass."
        }
      ]
    }
  }
}

When parsed, this file is rendered for the end-user like so:

$ resume

--------------------------------------------------------------------------------
Info
--------------------------------------------------------------------------------
Name: Jean-Luc Picard
Email: [email protected]
Tea: Earl Grey, Hot

--------------------------------------------------------------------------------
Education
--------------------------------------------------------------------------------
Starfleet Academy                                    :  San Francisco, United Earth
Officer                                              :  2323 - 2327

--------------------------------------------------------------------------------
Employment
--------------------------------------------------------------------------------
Starfleet                                            :  San Francisco, United Earth
Captain                                              :  2333 - 2379
    Ascended from bridge officer to captain on the USS Stargazer. Commanded the
    Stargazer for two decades. Creator of the "Picard Maneuver." Commanded the
    USS Enterprise-D and Enterprise-E, exploring the great, unexplored mass.

String Blocks

As you can see, when a raw string is defined in a section's data block, it gets rendered exactly as written:

"data": [
  "Name: Jean-Luc Picard",
  "Email: [email protected]",
  "Tea: Earl Grey, Hot"
]

Becomes:

Name: Jean-Luc Picard
Email: [email protected]
Tea: Earl Grey, Hot

Object Blocks

Alternatively, a more structured format can be used to make the output a little cleaner:

"data": [
  {
    "header": [
      "Starfleet",
      "San Francisco, United Earth"
    ],
    "subheader": [
      "Captain",
      "2333 - 2379"
    ],
    "body": "Ascended from bridge officer to captain on the USS Stargazer. Commanded the Stargazer for two decades. Creator of the \"Picard Maneuver.\" Commanded the USS Enterprise-D and Enterprise-E, exploring the great, unexplored mass."
  }
]

Becomes:

Starfleet                                            :  San Francisco, United Earth
Captain                                              :  2333 - 2379
    Ascended from bridge officer to captain on the USS Stargazer. Commanded the
    Stargazer for two decades. Creator of the "Picard Maneuver." Commanded the
    USS Enterprise-D and Enterprise-E, exploring the great, unexplored mass.

The header and subheader values allow you to cleanly separate names, titles, locations, and dates in a clearly readable format, while the body value can be filled out to provide more detail about the entry—and, for the record, body is word-wrapped at 76 characters, so you don't have to worry about formatting.

Note: It's important to note that the header, subheader, and body values are all optional, so you can have a little control, over what gets displayed and where.

Contributing

Please read through the contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.

Support

The issue tracker is the preferred channel for bug reports, feature requests and submitting pull requests.

License

TCPCV is licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].