Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Request | 25,650 | 680,683 | 61,211 | 8 days ago | 126 | February 11, 2020 | 119 | apache-2.0 | JavaScript | |
🏊🏾 Simplified HTTP request client. | ||||||||||
Auth Boss | 2,843 | 7 years ago | ||||||||
🔒 Become an Auth Boss. Learn about different authentication methodologies on the web. | ||||||||||
Gohttpserver | 2,223 | 2 months ago | 13 | April 06, 2021 | 100 | mit | JavaScript | |||
The best HTTP Static File Server, write with golang+vue | ||||||||||
Awesome Api | 2,091 | a year ago | 4 | |||||||
A curated list of awesome resources for design and implement RESTful API's. | ||||||||||
Ciao | 1,768 | 2 months ago | 3 | mit | Ruby | |||||
HTTP checks & tests (private & public) monitoring - check the status of your URL | ||||||||||
Flask Httpauth | 1,212 | 2,136 | 110 | 2 months ago | 34 | April 27, 2023 | 9 | mit | Python | |
Simple extension that provides Basic, Digest and Token HTTP authentication for Flask routes | ||||||||||
Passport Http Bearer | 938 | 4,428 | 553 | a year ago | 7 | August 02, 2013 | 17 | mit | JavaScript | |
HTTP Bearer authentication strategy for Passport and Node.js. | ||||||||||
Seyren | 868 | 4 years ago | 55 | other | Java | |||||
An alerting dashboard for Graphite | ||||||||||
Rest Server | 754 | 24 days ago | 19 | July 09, 2023 | 40 | bsd-2-clause | Go | |||
Rest Server is a high performance HTTP server that implements restic's REST backend API. | ||||||||||
Proxy Chain | 724 | 28 | 41 | a month ago | 130 | November 02, 2023 | 21 | apache-2.0 | JavaScript | |
Node.js implementation of a proxy server (think Squid) with support for SSL, authentication and upstream proxy chaining. |
Binaries can be downloaded from this repo releases
Tested with go-1.16
download
and qrcode
in small screen/-/info/some.(apk|ipa)
to get detail info/-/apk/info/some.apk
to get android package info$ go install github.com/codeskyblue/gohttpserver@latest
Or download binaries from github releases
If you are using Mac, simply run command
$ brew install codeskyblue/tap/gohttpserver
Listen on port 8000 of all interfaces, and enable file uploading.
$ gohttpserver -r ./ --port 8000 --upload
Use command gohttpserver --help
to see more usage.
share current directory
$ docker run -it --rm -p 8000:8000 -v $PWD:/app/public --name gohttpserver codeskyblue/gohttpserver
Share current directory with http basic auth
$ docker run -it --rm -p 8000:8000 -v $PWD:/app/public --name gohttpserver \
codeskyblue/gohttpserver \
--auth-type http --auth-http username:password
Share current directory with openid auth. (Works only in netease company.)
$ docker run -it --rm -p 8000:8000 -v $PWD:/app/public --name gohttpserver \
codeskyblue/gohttpserver \
--auth-type openid
To build image yourself, please change the PWD to the root of this repo.
$ cd gohttpserver/
$ docker build -t codeskyblue/gohttpserver -f docker/Dockerfile .
Enable basic http authentication
$ gohttpserver --auth-type http --auth-http username:password
Use openid auth
$ gohttpserver --auth-type openid --auth-openid https://login.example-hostname.com/openid/
Use oauth2-proxy with
$ gohttpserver --auth-type oauth2-proxy
You can configure to let a http reverse proxy handling authentication.
When using oauth2-proxy, the backend will use identification info from request headers X-Auth-Request-Email
as userId and X-Auth-Request-Fullname
as user's display name.
Please config your oauth2 reverse proxy yourself.
More about oauth2-proxy.
All required headers list as following.
header | value |
---|---|
X-Auth-Request-Email | userId |
X-Auth-Request-Fullname | user's display name(urlencoded) |
X-Auth-Request-User | user's nickname (mostly email prefix) |
Enable upload
$ gohttpserver --upload
Enable delete and Create folder
$ gohttpserver --delete
Add access rule by creating a .ghs.yml
file under a sub-directory. An example:
---
upload: false
delete: false
users:
- email: "[email protected]"
delete: true
upload: true
token: 4567gf8asydhf293r23r
In this case, if openid auth is enabled and user "[email protected]" has logged in, he/she can delete/upload files under the directory where the .ghs.yml
file exits.
token
is used for upload. see upload with curl
For example, in the following directory hierarchy, users can delete/uploade files in directory foo
, but he/she cannot do this in directory bar
.
root -
|-- foo
| |-- .ghs.yml
| `-- world.txt
`-- bar
`-- hello.txt
User can specify config file name with --conf
, see example config.yml.
To specify which files is hidden and which file is visible, add the following lines to .ghs.yml
accessTables:
- regex: block.file
allow: false
- regex: visual.file
allow: true
This is used for server on which https is enabled. default use https://plistproxy.herokuapp.com/plist
$ gohttpserver --plistproxy=https://someproxyhost.com/
Test if proxy works:
$ http POST https://someproxyhost.com/plist < app.plist
{
"key": "18f99211"
}
$ http GET https://someproxyhost.com/plist/18f99211
# show the app.plist content
If your ghs running behide nginx server and have https configed. plistproxy will be disabled automaticly.
For example, upload a file named foo.txt
to directory somedir
$ curl -F [email protected] localhost:8000/somedir
{"destination":"somedir/foo.txt","success":true}
# upload with token
$ curl -F [email protected] -F token=12312jlkjafs localhost:8000/somedir
{"destination":"somedir/foo.txt","success":true}
# upload and change filename
$ curl -F [email protected] -F filename=hi.txt localhost:8000/somedir
{"destination":"somedir/hi.txt","success":true}
Upload zip file and unzip it (zip file will be delete when finished unzip)
$ curl -F file=@pkg.zip -F unzip=true localhost:8000/somedir
{"success": true}
Note: \/:*<>|
are not allowed in filenames.
Recommended configuration, assume your gohttpserver listening on 127.0.0.1:8200
server {
listen 80;
server_name your-domain-name.com;
location / {
proxy_pass http://127.0.0.1:8200; # here need to change
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 0; # disable upload limit
}
}
gohttpserver should started with --xheaders
argument when behide nginx.
Refs: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
gohttpserver also support --prefix
flag which will help to when meet /
is occupied by other service. relative issue https://github.com/codeskyblue/gohttpserver/issues/105
Usage example:
# for gohttpserver
$ gohttpserver --prefix /foo --addr :8200 --xheaders
Nginx settigns
server {
listen 80;
server_name your-domain-name.com;
location /foo {
proxy_pass http://127.0.0.1:8200; # here need to change
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 0; # disable upload limit
}
}
The search query follows common format rules just like Google. Keywords are seperated with space(s), keywords with prefix -
will be excluded in search results.
hello world
means must contains hello
and world
hello -world
means must contains hello
but not contains world
Depdencies are managed by govendor
$ go build
$ ./gohttpserver
$ go build
Theme are defined in assets/themes directory. Now only two themes are available, "black" and "green".
Go Libraries
The old version is hosted at codeskyblue/gohttp
This project is licensed under MIT.