22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/kraaken/cloudflare.rb', line 22
def create_tunnel(name)
tunnel_secret = Base64.strict_encode64 SecureRandom.hex(32)
body = {name:, tunnel_secret:, config_src: "cloudflare"}
config = {
config: {
ingress: [
{
hostname: "#{name}.server.nerdgeschoss.de",
service: "http://traefik:8080"
},
{
hostname: "*.#{name}.nerdgeschoss.de",
service: "http://traefik"
},
{
service: "http_status:404"
}
]
}
}
res = client.post("/client/v4/accounts/#{credential.username}/cfd_tunnel", body).body["result"]
tunnel = Tunnel.new(res["id"], res["name"], res["status"], self, res["token"])
logger.info "Creating tunnel #{name} with id #{tunnel.id}"
client.put("/client/v4/accounts/#{credential.username}/cfd_tunnel/#{tunnel.id}/configurations", config)
server_dns = {
type: "CNAME",
proxied: true,
name: "#{name}.server.nerdgeschoss.de",
content: "#{tunnel.id}.cfargotunnel.com"
}
logger.info "Creating DNS record for #{name}.server.nerdgeschoss.de"
client.post("/client/v4/zones/#{zone_id}/dns_records", server_dns)
app_dns = {
type: "CNAME",
proxied: true,
name: "*.#{name}.nerdgeschoss.de",
content: "#{tunnel.id}.cfargotunnel.com"
}
logger.info "Creating DNS record for #{name}.server.nerdgeschoss.de"
client.post("/client/v4/zones/#{zone_id}/dns_records", app_dns)
logger.info "Tunnel #{name} created"
tunnel
end
|