2022-03-29 13:49:45 -04:00
< template >
< div >
< h4 class = "mt-4" > Cloudflare Tunnel < / h4 >
< div class = "my-3" >
< div >
cloudflared :
< span v-if ="installed === true" class="text-primary" > {{ $ t ( " Installed " ) }} < / span >
< span v -else -if = " installed = = = false " class = "text-danger" > { { $t ( "Not installed" ) } } < / span >
< / div >
< div >
{ { $t ( "Status" ) } } :
< span v-if ="running" class="text-primary" > {{ $ t ( " Running " ) }} < / span >
< span v -else -if = " ! running " class = "text-danger" > { { $t ( "Not running" ) } } < / span >
< / div >
< div v-if ="false" >
{ { message } }
< / div >
2022-03-29 23:59:49 -04:00
< div v-if ="errorMessage" class="mt-3" >
2022-04-03 23:33:02 -04:00
{ { $t ( "Error Message:" ) } }
2022-03-29 13:49:45 -04:00
< textarea v -model = " errorMessage " class = "form-control" readonly > < / textarea >
< / div >
2022-04-03 23:33:02 -04:00
< i18n -t v-if ="installed === false" tag="p" keypath="wayToGetCloudflaredURL" >
< a
href = "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/"
target = "_blank"
> { { $t ( "cloudflareWebsite" ) } } < / a >
< / i 1 8 n - t >
2022-03-29 13:49:45 -04:00
< / div >
<!-- If installed show token input -- >
< div v-if ="installed" class="mb-2" >
< div class = "mb-4" >
< label class = "form-label" for = "cloudflareTunnelToken" >
Cloudflare Tunnel { { $t ( "Token" ) } }
< / label >
< HiddenInput
id = "cloudflareTunnelToken"
v - model = "cloudflareTunnelToken"
autocomplete = "one-time-code"
2022-03-29 23:59:49 -04:00
: readonly = "running"
2022-03-29 13:49:45 -04:00
/ >
< div class = "form-text" >
2022-03-29 23:59:49 -04:00
< div v-if ="cloudflareTunnelToken" class="mb-3" >
< span v-if ="!running" class="remove-token" @click="removeToken" > {{ $ t ( " Remove Token " ) }} < / span >
< / div >
2022-04-03 23:33:02 -04:00
{ { $t ( "Don't know how to get the token? Please read the guide:" ) } } < br / >
2022-03-29 13:49:45 -04:00
< a href = "https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy-with-Cloudflare-Tunnel" target = "_blank" >
https : //github.com/louislam/uptime-kuma/wiki/Reverse-Proxy-with-Cloudflare-Tunnel
< / a >
< / div >
< / div >
< div >
< button v-if ="!running" class="btn btn-primary" type="submit" @click="start" >
{ { $t ( "Start" ) } } cloudflared
< / button >
2022-03-29 23:59:49 -04:00
< button v-if ="running" class="btn btn-danger" type="submit" @click="$refs.confirmStop.show();" >
2022-03-29 13:49:45 -04:00
{ { $t ( "Stop" ) } } cloudflared
< / button >
2022-03-29 23:59:49 -04:00
< Confirm ref = "confirmStop" btn -style = " btn -danger " : yes -text = " $ t ( ' Stop ' ) + ' cloudflared ' " :no-text ="$t('Cancel')" @yes ="stop" >
2022-04-03 23:33:02 -04:00
{ { $t ( "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it." ) } }
2022-03-29 23:59:49 -04:00
< div class = "mt-3" >
< label for = "current-password2" class = "form-label" >
{ { $t ( "Current Password" ) } }
< / label >
< input
id = "current-password2"
v - model = "currentPassword"
type = "password"
class = "form-control"
required
/ >
< / div >
< / Confirm >
2022-03-29 13:49:45 -04:00
< / div >
< / div >
2022-04-03 23:33:02 -04:00
< h4 class = "mt-4" > { { $t ( "Other Software" ) } } < / h4 >
2022-03-29 13:49:45 -04:00
< div >
2022-04-03 23:33:02 -04:00
{ { $t ( "For example: nginx, Apache and Traefik." ) } } < br / >
{ { $t ( "Please read" ) } } < a href = "https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy" target = "_blank" > https : //github.com/louislam/uptime-kuma/wiki/Reverse-Proxy</a>.
2022-03-29 13:49:45 -04:00
< / div >
< / div >
< / template >
< script >
import HiddenInput from "../../components/HiddenInput.vue" ;
2022-03-29 23:59:49 -04:00
import Confirm from "../Confirm.vue" ;
2022-03-29 13:49:45 -04:00
const prefix = "cloudflared_" ;
export default {
components : {
HiddenInput ,
2022-03-29 23:59:49 -04:00
Confirm
2022-03-29 13:49:45 -04:00
} ,
data ( ) {
2022-03-29 23:59:49 -04:00
// See /src/mixins/socket.js
2022-03-29 13:49:45 -04:00
return this . $root . cloudflared ;
} ,
computed : {
} ,
watch : {
} ,
2022-03-29 23:59:49 -04:00
created ( ) {
2022-03-29 13:49:45 -04:00
this . $root . getSocket ( ) . emit ( prefix + "join" ) ;
} ,
unmounted ( ) {
this . $root . getSocket ( ) . emit ( prefix + "leave" ) ;
} ,
methods : {
start ( ) {
this . $root . getSocket ( ) . emit ( prefix + "start" , this . cloudflareTunnelToken ) ;
} ,
stop ( ) {
2022-03-29 23:59:49 -04:00
this . $root . getSocket ( ) . emit ( prefix + "stop" , this . currentPassword , ( res ) => {
this . $root . toastRes ( res ) ;
} ) ;
2022-03-29 13:49:45 -04:00
} ,
2022-03-29 23:59:49 -04:00
removeToken ( ) {
this . $root . getSocket ( ) . emit ( prefix + "removeToken" ) ;
this . cloudflareTunnelToken = "" ;
}
2022-03-29 13:49:45 -04:00
}
} ;
< / script >
< style lang = "scss" scoped >
2022-03-29 23:59:49 -04:00
. remove - token {
text - decoration : underline ;
cursor : pointer ;
2022-03-29 13:49:45 -04:00
}
< / style >