The interactive web server

Overview

HTTPLAB

Build Status Go Report Card PRs Welcome

The interactive web server.

HTTPLabs let you inspect HTTP requests and forge responses.


screencast

Install

Golang

go get github.com/gchaincl/httplab
go install github.com/gchaincl/httplab/cmd/httplab

Archlinux

yaourt httplab

Snap FIXME

On systems where snap is supported:

snap install httplab

Binary distribution

Each release provides pre-built binaries for different architectures, you can download them here: https://github.com/gchaincl/httplab/releases/latest

Help

Usage of httplab:
  -a, --auto-update       Auto-updates response when fields change. (default true)
  -b, --body string       Specifies the inital response body. (default "Hello, World")
  -c, --config string     Specifies custom config path.
      --cors              Enable CORS.
      --cors-display      Display CORS requests. (default true)
  -d, --delay int         Specifies the initial response delay in ms.
  -H, --headers strings   Specifies the initial response headers. (default [X-Server:HTTPLab])
  -p, --port int          Specifies the port where HTTPLab will bind to. (default 10080)
  -s, --status string     Specifies the initial response status. (default "200")
  -v, --version           Prints current version.

Key Bindings

Key Description
Tab Next Input
Shift+Tab Previous Input
Ctrl+a Apply Response changes
Ctrl+r Resets Request history
Ctrl+s Save Response as
Ctrl+f Save Request as
Ctrl+l Toggle Responses list
Ctrl+t Toggle Response builder
Ctrl+o Open Body file
Ctrl+b Switch Body mode
Ctrl+h Toggle Help
Ctrl+w Toggle line wrapping
q Close popup
PgUp Previous Request
PgDown Next Request
Ctrl+c Quit

HTTPLab uses file to store pre-built responses, it will look for a file called .httplab on the current directory if not found it will fallback to $HOME. A sample file can be found here.

HTTPLab is heavily inspired by wuzz

Issues
  • "Save response as" not working

    I tried to do "Save response as", and got the message "open /home/steven/.httplab: permission denied".

    I tried making a directory .httplab (complained that it was a directory), and later a text file (complained permission denied).

    I tried saving using a relative file name, and a full file name, and nothing was saved.

    opened by spemberton 19
  • can not run ?

    can not run ?

    Just git clone the repository and go run main.go, but it show below message

    # command-line-arguments
    ./main.go:13: undefined: UI
    ./main.go:16: undefined: DumpRequest
    ./main.go:42: undefined: NewUI
    
    opened by qianguozheng 10
  • Text selecting support using mouse

    Text selecting support using mouse

    Unless you're using tmux (or some terminal multiplexer) copying text to the clipboard it's hard, this is mainly because you can't select text using the mouse. This would be a nice to have feature.

    Hacktoberfest 
    opened by qustavo 8
  • Buffer Request Pane

    Buffer Request Pane

    Would be nice to be able to scroll through previous requests, or support having multiple requests on-screen at once.

    Useful when debugging something that sends multiple different payloads - can just point them all at httplab and understand the flow.

    feature 
    opened by SikhNerd 7
  • Updates |DumpRequest| to iterate over Header keys alphabetically

    Updates |DumpRequest| to iterate over Header keys alphabetically

    Adds functionality per issue #47 -- simply added a function to sort the request headers alphabetically and call said function prior to iterating over the request header map in DumpRequest

    opened by j-haj 6
  • Add snapcraft yaml to enable builds of snaps

    Add snapcraft yaml to enable builds of snaps

    Hello!

    This PR adds support for building snaps of httplab via snapcraft - see http://snapcraft.io/ for more information. Hooking this up means that builds of master can be pushed to the store and make latest builds of httplab are immediately available to millions of users.

    To test the build used to make the snap, on an up to date 16.04 machine

    apt install snapcraft

    git clone http://github.com/popey/httplab git checkout add-snapcraft cd httplab snapcraft

    This will build a snap which can be installed via:-

    snap install httplab_0.1.0+git_amd64.snap --dangerous

    (the --dangerous is required as it's an unsigned package being side-loaded, rather than a signed one from the store).

    Test the application as expected.

    Would be great to get this merged, and then hook up the automated builds to land in the store directly, as per http://snapcraft.io/docs/build-snaps/ci-integration. Happy to help through that process. We also have an automated system at http://build.snapcraft.io/ which could be used to auto-build and push to the store.

    Once published in the store, it can be installed with:-

    snap install httplab --edge

    Later, when pushed to the stable store, it can be installed with:-

    snap insatll httplab

    opened by popey 6
  • Configuration file

    Configuration file

    Would be super neat if the tool could either pick up the .httplab config file from the current directory or via command line argument (similar to the port configuration). That would allow to have different saved requests for different projects and also to version control the saved requests.

    feature 
    opened by AxelTheGerman 6
  • Added graceful shutdown, closes #66

    Added graceful shutdown, closes #66

    This PR implements Graceful shutdown. The message is shown in log output as opposed to GUI. We might think about changing that, but it would require more of a code structure rewrite. Another improvement could be to add deadline to shutdown operation.

    opened by maciekmm 5
  • Display request headers sorted

    Display request headers sorted

    As request headers are implemented as a map, the order of the keys are not guaranteed. It would be nice to display all the request header sorted alphabetically, so that is easy to identify changes from one request to the other

    Hacktoberfest In Progress 
    opened by qustavo 5
  • Can't load package: package github.com/gchaincl/httplab/cmd/httplab

    Can't load package: package github.com/gchaincl/httplab/cmd/httplab

    I'm not a Go developer, so only following the instruction in the README:

    $ go install github.com/gchaincl/httplab/cmd/httplab
    can't load package: package github.com/gchaincl/httplab/cmd/httplab: cannot find package "github.com/gchaincl/httplab/cmd/httplab" in any of:
    	/usr/local/go/src/github.com/gchaincl/httplab/cmd/httplab (from $GOROOT)
    	/home/user/go/src/github.com/gchaincl/httplab/cmd/httplab (from $GOPATH)
    

    There is a remote location to install this package? Do I have to download the sources an place them into the /usr/local/go/ folder to install it? Because /usr/local/go is not a user folder, It shouldn't be required to install an app like this, and isn't specified in the README instructions.

    opened by mrsarm 5
  • Body (Input) is not updated

    Body (Input) is not updated

    Hi,

    maybe I am missing something very obvious, but for me the Editor field for "Body (Input)" is not working.

    Changes, which I make to the Status, Delay or Header Fields take effect. When I load a predefined Reponse body from the .httplab file, the changes take effect. But when I enter a Response Body by hand in the editor field, the body returned does not reflect the change (regardless, whether I stay in the Editor, change to another input field, use Ctrl-A for updating the response or not)

    Any ideas, why this happens? I have tried to locate the issue, but since I do not know go, it is quite hard.

    bug 
    opened by michaelrommel 5
  • No information returned

    No information returned

    $uri="172.245.118.60" [email protected]{ "content-length"= "215" "cache-control"= "max-age=0" "upgrade-insecure-requests"= "1" "user-agent"= "Mozilla/5.0 (Linux; Android 9; LM-G710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36" "sec-fetch-mode"= "navigate" "sec-fetch-user"= "?1" "content-type"= "application/x-www-form-urlencoded" "dnt"= "1" "accept"= "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3" "sec-fetch-site"= "none" "accept-encoding"= "gzip, deflate, br" "accept-language"= "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" } Invoke-WebRequest $uri -Method Post -Headers $headers

    opened by he852100 1
  • Problems rendering on tmux

    Problems rendering on tmux

    There are some issues when using it inside tmux 2.9a, it renders incorrec t characters and doesn't allow to use arrow keys, neither to use it at all actually, tried in different terminals:

    • Termite
    • rxvt-unicode
    • xterm
    • alacritty

    using both zsh and bash and evertything works fine on it's own, but in tmux it presents this problem (screenshot in link)

    I'm using archlinux and tmux 2.9a

    tried installation from AUR, with golang and from source, problem persists and it's only when inside tmux

    [screenshot](https://i.imgur.com/J9lV3I5.

    Edit

    it works when changing TERM variable inside tmux either from tmux-256color to tmux or screen-256color to screen

    opened by mxdevmanuel 1
  • Snap package unavailable

    Snap package unavailable

    Looks like httplab disappeared from Snap https://snapcraft.io/search?q=httplab

    It's possible to create new snaps automatically in CI https://docs.snapcraft.io/build-snaps/ci-integration

    opened by matrixik 1
  • Create a generic install script

    Create a generic install script

    Projects like brew provides a handy way to install. It would be great to have something similar that depending on your architecture, fetches the righ binary and copies it to some $PATH.

    A simple bash script should be enough to start,

    opened by qustavo 0
  • Customizable keybindings

    Customizable keybindings

    Having configurable key bindings would be a nice addition. I can implement this to store custom key bindings in ~/.httplab, is this a good place for such change?

    opened by maciekmm 1
Releases(v0.4.0)
Owner
Gustavo Chaín
Technical Dealer
Gustavo Chaín
A REST API for the DN42 registry, written in Go, to provide a bridge between interactive applications and the registry.

dn42regsrv A REST API for the DN42 registry, written in Go, to provide a bridge between interactive applications and registry data. A public instance

Simon Marsh 0 Apr 21, 2022
The server-pubsub is the main backend of DATAVOC project that manages all the other web-server modules of the same project such as the processor

server-pubsub The server-pubsub is the main backend of DATAVOC project that manages all the other web-server modules of the same project such as the p

null 0 Dec 3, 2021
🌐 (Web 3.0) Pastebin built on IPFS, securely served by Distributed Web and Edge Network.

pastebin-ipfs 简体中文 (IPFS Archivists) Still in development, Pull Requests are welcomed. Pastebin built on IPFS, securely served by Distributed Web and

Mayo/IO 159 Jun 17, 2022
GOWS is GoLang web-socket module Provides you with ease of handling web socket connections with a few lines

GOWS GOWS is GoLang web-socket module Provides you with ease of handling web socket connections with a few lines, it supports multi-connection on one

null 6 Apr 4, 2022
Go-web-dev - Web Development With Google's Golang Programming Language Code Snippet and Exercises.

Web Development With Google's Golang Programming Language Code Snippet and Exercises This repository contains my code snippets, hands on exercises and

null 2 Jan 16, 2022
Emergency web server

spark Emergency web server For those occasions when your webserver is down and you want to display a quick maintainance note. Or just want to quickly

Radu Ioan Fericean 579 Jun 15, 2022
Instant, disposable, single-binary web based live chat server. Go + VueJS.

Niltalk Niltalk is a web based disposable chat server. It allows users to create password protected disposable, ephemeral chatrooms and invite peers t

Kailash Nadh 852 Jun 16, 2022
Receive phone calls from anybody on the Web. Or host a telephony server yourself.

WebCall WebRTC Telephony Server Browser based telephony over E2E-encrypted P2P-links with very high audio quality. WebCall is lightweight and easy to

Timur Mehrvarz 86 Jun 22, 2022
The witch Web server, Written in golang

WitchServer The witch Web server, Written in golang This is a work-in-progress. So code might be a bit messy. I will only release the working, stable

null 1 Jun 2, 2022
Simple web content/proxy server that embodies enterprise zero trust security

pswa - Protected Static Web App Introduction pswa is a simple web content/proxy server which is suitable for various static web apps. Features Availab

YAEGASHI Takeshi 3 Jan 10, 2022
A local web-server for mocking channel responses

Local Channel Mock This is application is intended to mock the ISO channel during the development of a new integration. Exposed endpoints By default,

Santiago Puerto 0 Dec 27, 2021
A standalone Web Server developed with the standard http library, suport reverse proxy & flexible configuration

paddy 简介 paddy是一款单进程的独立运行的web server,基于golang的标准库net/http实现。 paddy提供以下功能: 直接配置http响应 目录文件服务器 proxy_pass代理 http反向代理 支持请求和响应插件 部署 编译 $ go build ./main/p

fangyousong 5 May 2, 2022
A http-relay server/client written in golang to forward requests to a service behind a nat router from web

http-relay This repo is WIP http-relay is a server/client application written in go(lang) to forward http(s) requests to an application behind a nat r

john dev 1 Dec 16, 2021
Golang Web server to draw cards from The Tarot of the Silicon Dawn

Silicon Dawn I made this so I can pull random cards on my phone and review the text. I originally designed this for use in Pythonista Then I rewrote i

Amelia Aronsohn 0 Dec 17, 2021
Web app utility to get server list data from Minecraft servers.

Ping Web app utility to get server list data from Minecraft servers. Avalible at https://ping.turtley12.dev/app, Running yourself Before compiling and

null 0 Dec 21, 2021
Home Assistant screenshot capture web server suitable for e-ink displays

hass-shooter hass-shooter is a Home Assistant screenshot capture web server suitable for e-ink displays. Dependencies Chromium ImageMagick Installatio

Roi Martin 1 Jan 28, 2022
A mini Web SSH server.

MiniWebSSHServer A mini Web SSH server. Build go build . Run miniwebsshserver -bind <ip_addr:port> Open a term from url http://<ip_addr:port>/term?h

LEI HAIYONG 7 Jun 6, 2022
dedebme - embeded web server

dedebme - embeded web server

Socheat's Lab 0 Jan 31, 2022