Compare commits
5 Commits
v0.1.1
...
d1dc57f15a
Author | SHA1 | Date | |
---|---|---|---|
d1dc57f15a
|
|||
631c2bdcf3
|
|||
059ed64805
|
|||
6f4b7335f8
|
|||
9f222725d1
|
61
app.rb
61
app.rb
@ -1,6 +1,5 @@
|
|||||||
require "bundler/setup"
|
require "bundler/setup"
|
||||||
require "sinatra"
|
require "sinatra"
|
||||||
require "sinatra/json"
|
|
||||||
require "sinatra/cookies"
|
require "sinatra/cookies"
|
||||||
require "sinatra/multi_route"
|
require "sinatra/multi_route"
|
||||||
require "time"
|
require "time"
|
||||||
@ -209,23 +208,50 @@ before do
|
|||||||
request.session_options[:skip] = !request.path_info.start_with?("/session")
|
request.session_options[:skip] = !request.path_info.start_with?("/session")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
helpers do
|
||||||
|
def json(obj, opts: nil, pretty: false)
|
||||||
|
if pretty
|
||||||
|
JSON.pretty_generate obj, opts:
|
||||||
|
else
|
||||||
|
JSON.generate(obj, opts:)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def protected! hidden = false
|
||||||
|
return if authorized?
|
||||||
|
|
||||||
|
if hidden
|
||||||
|
halt 404, "Not Found"
|
||||||
|
else
|
||||||
|
headers["WWW-Authenticate"] = 'Basic realm="Restricted Area"'
|
||||||
|
halt 401, "Unauthorized"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def authorized?
|
||||||
|
@auth ||= Rack::Auth::Basic::Request.new(request.env)
|
||||||
|
@auth.provided? and
|
||||||
|
@auth.basic? and
|
||||||
|
@auth.credentials and
|
||||||
|
@auth.credentials == ["qwer", "asdf"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
get "/" do
|
get "/" do
|
||||||
"hello there!\n"
|
"hello there!\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/env", provides: "json" do
|
get "/env", provides: "json" do
|
||||||
content_type :json
|
pretty = params.key? :pretty
|
||||||
|
|
||||||
return JSON.pretty_generate ENV.sort.to_h if params.key? "pretty"
|
json ENV.sort.to_h, pretty:
|
||||||
|
|
||||||
JSON.generate ENV.sort.to_h
|
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/headers", provides: "json" do
|
get "/headers", provides: "json" do
|
||||||
|
pretty = params.key? :pretty
|
||||||
h = req_headers
|
h = req_headers
|
||||||
return JSON.pretty_generate h if params.key? "pretty"
|
|
||||||
|
|
||||||
JSON.generate h
|
json h, pretty:
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/livez" do
|
get "/livez" do
|
||||||
@ -239,6 +265,7 @@ end
|
|||||||
get "/livez/uptime" do
|
get "/livez/uptime" do
|
||||||
tt = TickTock.new
|
tt = TickTock.new
|
||||||
x = {started_at: tt.started_at, seconds: tt.uptime.to_i, human: human_time(tt.uptime.to_i)}
|
x = {started_at: tt.started_at, seconds: tt.uptime.to_i, human: human_time(tt.uptime.to_i)}
|
||||||
|
|
||||||
json x
|
json x
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -301,7 +328,9 @@ post "/halt" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
get "/pid" do
|
get "/pid" do
|
||||||
JSON.generate({puma: master_pid, pid: Process.pid})
|
pretty = params.key? :pretty
|
||||||
|
|
||||||
|
json({puma: master_pid, pid: Process.pid}, pretty:)
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/token" do
|
get "/token" do
|
||||||
@ -310,23 +339,27 @@ get "/token" do
|
|||||||
expires_at = Time.at(exp).to_datetime
|
expires_at = Time.at(exp).to_datetime
|
||||||
token = JWT.encode payload, JWT_SECRET, "HS256"
|
token = JWT.encode payload, JWT_SECRET, "HS256"
|
||||||
x = {token: token, expires_at: expires_at}
|
x = {token: token, expires_at: expires_at}
|
||||||
|
|
||||||
json x
|
json x
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/token/validate" do
|
get "/token/validate" do
|
||||||
token = req_headers["authorization"].split[1]
|
token = req_headers["authorization"].split[1]
|
||||||
payload = JWT.decode token, JWT_SECRET, true, algorithm: "HS256"
|
payload = JWT.decode token, JWT_SECRET, true, algorithm: "HS256"
|
||||||
|
|
||||||
json payload
|
json payload
|
||||||
end
|
end
|
||||||
|
|
||||||
post "/session" do
|
post "/session" do
|
||||||
session.merge! params
|
session.merge! params
|
||||||
|
|
||||||
json session.to_hash
|
json session.to_hash
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/session" do
|
get "/session" do
|
||||||
j = session.to_hash
|
j = session.to_hash
|
||||||
j[:hostname] = ENV["HOSTNAME"]
|
j[:hostname] = ENV["HOSTNAME"]
|
||||||
|
|
||||||
json j
|
json j
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -372,3 +405,15 @@ get "/chunked/:delay" do
|
|||||||
out << "Hello, world!\n"
|
out << "Hello, world!\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
route :delete, :get, :patch, :post, :put, "/auth/basic", provides: "json" do
|
||||||
|
pretty = params.key? :pretty
|
||||||
|
|
||||||
|
if params.key? :hidden
|
||||||
|
protected! hidden: true
|
||||||
|
else
|
||||||
|
protected!
|
||||||
|
end
|
||||||
|
|
||||||
|
json({authenticated: true, user: @auth.username}, pretty:)
|
||||||
|
end
|
||||||
|
@ -1,24 +1,12 @@
|
|||||||
---
|
---
|
||||||
apiVersion: argoproj.io/v1alpha1
|
apiVersion: v1
|
||||||
kind: Rollout
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: kipunji
|
name: kipunji
|
||||||
annotations:
|
annotations:
|
||||||
reloader.stakater.com/auto: "true"
|
reloader.stakater.com/auto: "true"
|
||||||
spec:
|
spec:
|
||||||
replicas: 5
|
replicas: 5
|
||||||
strategy:
|
|
||||||
canary:
|
|
||||||
steps:
|
|
||||||
- setWeight: 20
|
|
||||||
- pause: {}
|
|
||||||
- setWeight: 40
|
|
||||||
- pause: {duration: 10}
|
|
||||||
- setWeight: 60
|
|
||||||
- pause: {duration: 10}
|
|
||||||
- setWeight: 80
|
|
||||||
- pause: {duration: 10}
|
|
||||||
revisionHistoryLimit: 2
|
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: kipunji
|
app: kipunji
|
@ -5,6 +5,6 @@ namespace: kipunji
|
|||||||
resources:
|
resources:
|
||||||
- secret.yaml
|
- secret.yaml
|
||||||
- configmap.yaml
|
- configmap.yaml
|
||||||
- rollout.yaml
|
- deployment.yaml
|
||||||
- services.yaml
|
- services.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
---
|
---
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: kipunji
|
||||||
namespace: kipunji
|
namespace: kipunji
|
||||||
resources:
|
resources:
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
|
Reference in New Issue
Block a user