diff --git a/cmd/apps/skysocks-client/skysocks-client.go b/cmd/apps/skysocks-client/skysocks-client.go index 886fec6d7..f21bbfeb5 100644 --- a/cmd/apps/skysocks-client/skysocks-client.go +++ b/cmd/apps/skysocks-client/skysocks-client.go @@ -75,7 +75,8 @@ func main() { }() if *serverPK == "" { - log.Fatal("Invalid server PubKey") + log.Warn("Empty server PubKey. Exiting") + return } pk := cipher.PubKey{} diff --git a/pkg/hypervisor/hypervisor.go b/pkg/hypervisor/hypervisor.go index 10ea26238..3c7ca25fd 100644 --- a/pkg/hypervisor/hypervisor.go +++ b/pkg/hypervisor/hypervisor.go @@ -377,25 +377,6 @@ func (hv *Hypervisor) putApp() http.HandlerFunc { } } - if reqBody.Status != nil { - switch *reqBody.Status { - case statusStop: - if err := ctx.RPC.StopApp(ctx.App.Name); err != nil { - httputil.WriteJSON(w, r, http.StatusInternalServerError, err) - return - } - case statusStart: - if err := ctx.RPC.StartApp(ctx.App.Name); err != nil { - httputil.WriteJSON(w, r, http.StatusInternalServerError, err) - return - } - default: - errMsg := fmt.Errorf("value of 'status' field is %d when expecting 0 or 1", *reqBody.Status) - httputil.WriteJSON(w, r, http.StatusBadRequest, errMsg) - return - } - } - const ( skysocksName = "skysocks" skysocksClientName = "skysocks-client" @@ -409,12 +390,34 @@ func (hv *Hypervisor) putApp() http.HandlerFunc { } if reqBody.PK != nil && ctx.App.Name == skysocksClientName { + log.Errorf("SETTING PK: %s", *reqBody.PK) if err := ctx.RPC.SetSocksClientPK(*reqBody.PK); err != nil { + log.Errorf("ERROR SETTING PK") httputil.WriteJSON(w, r, http.StatusInternalServerError, err) return } } + if reqBody.Status != nil { + switch *reqBody.Status { + case statusStop: + if err := ctx.RPC.StopApp(ctx.App.Name); err != nil { + httputil.WriteJSON(w, r, http.StatusInternalServerError, err) + return + } + case statusStart: + if err := ctx.RPC.StartApp(ctx.App.Name); err != nil { + log.Errorf("ERROR STARTING APP") + httputil.WriteJSON(w, r, http.StatusInternalServerError, err) + return + } + default: + errMsg := fmt.Errorf("value of 'status' field is %d when expecting 0 or 1", *reqBody.Status) + httputil.WriteJSON(w, r, http.StatusBadRequest, errMsg) + return + } + } + httputil.WriteJSON(w, r, http.StatusOK, ctx.App) }) } diff --git a/pkg/util/buildinfo/buildinfo.go b/pkg/util/buildinfo/buildinfo.go index f460f64ac..f20dfbc28 100644 --- a/pkg/util/buildinfo/buildinfo.go +++ b/pkg/util/buildinfo/buildinfo.go @@ -46,7 +46,7 @@ type Info struct { // WriteTo writes build info summary to io.Writer. func (info *Info) WriteTo(w io.Writer) (int64, error) { - msg := fmt.Sprintf("Version %q built on %q agaist commit %q\n", info.Version, info.Date, info.Commit) + msg := fmt.Sprintf("Version %q built on %q against commit %q\n", info.Version, info.Date, info.Commit) n, err := w.Write([]byte(msg)) return int64(n), err } diff --git a/pkg/visor/config.go b/pkg/visor/config.go index 0dac57ab3..79e3b5393 100644 --- a/pkg/visor/config.go +++ b/pkg/visor/config.go @@ -96,53 +96,6 @@ func (c *Config) flush() error { return ioutil.WriteFile(*c.Path, bytes, filePerm) } -func (c *Config) updateAppAutoStart(appName string, autoStart bool) error { - changed := false - - for i := range c.Apps { - if c.Apps[i].App == appName { - c.Apps[i].AutoStart = autoStart - changed = true - break - } - } - - if !changed { - return nil - } - - return c.flush() -} - -func (c *Config) updateAppArg(appName, argName, value string) error { - configChanged := true - - for i := range c.Apps { - argChanged := false - if c.Apps[i].App == appName { - configChanged = true - - for j := range c.Apps[i].Args { - if c.Apps[i].Args[j] == argName && j+1 < len(c.Apps[i].Args) { - c.Apps[i].Args[j+1] = value - argChanged = true - break - } - } - - if !argChanged { - c.Apps[i].Args = append(c.Apps[i].Args, argName, value) - } - } - } - - if configChanged { - return c.flush() - } - - return nil -} - // Keys returns visor public and secret keys extracted from config. // If they are not found, new keys are generated. func (c *Config) Keys() *KeyPair { diff --git a/pkg/visor/visor.go b/pkg/visor/visor.go index 4dc6ee2b3..620573ed0 100644 --- a/pkg/visor/visor.go +++ b/pkg/visor/visor.go @@ -699,7 +699,7 @@ func (visor *Visor) setAutoStart(appName string, autoStart bool) error { visor.logger.Infof("Saving auto start = %v for app %v to config", autoStart, appName) - return visor.conf.updateAppAutoStart(appName, autoStart) + return visor.updateAppAutoStart(appName, autoStart) } func (visor *Visor) setSocksPassword(password string) error { @@ -710,7 +710,7 @@ func (visor *Visor) setSocksPassword(password string) error { passcodeArgName = "-passcode" ) - if err := visor.conf.updateAppArg(socksName, passcodeArgName, password); err != nil { + if err := visor.updateAppArg(socksName, passcodeArgName, password); err != nil { return err } @@ -732,7 +732,7 @@ func (visor *Visor) setSocksClientPK(pk cipher.PubKey) error { pkArgName = "-srv" ) - if err := visor.conf.updateAppArg(socksClientName, pkArgName, pk.String()); err != nil { + if err := visor.updateAppArg(socksClientName, pkArgName, pk.String()); err != nil { return err } @@ -746,6 +746,63 @@ func (visor *Visor) setSocksClientPK(pk cipher.PubKey) error { return nil } +func (visor *Visor) updateAppAutoStart(appName string, autoStart bool) error { + changed := false + + for i := range visor.conf.Apps { + if visor.conf.Apps[i].App == appName { + visor.conf.Apps[i].AutoStart = autoStart + if v, ok := visor.appsConf[appName]; ok { + v.AutoStart = autoStart + visor.appsConf[appName] = v + } + + changed = true + break + } + } + + if !changed { + return nil + } + + return visor.conf.flush() +} + +func (visor *Visor) updateAppArg(appName, argName, value string) error { + configChanged := true + + for i := range visor.conf.Apps { + argChanged := false + if visor.conf.Apps[i].App == appName { + configChanged = true + + for j := range visor.conf.Apps[i].Args { + if visor.conf.Apps[i].Args[j] == argName && j+1 < len(visor.conf.Apps[i].Args) { + visor.conf.Apps[i].Args[j+1] = value + argChanged = true + break + } + } + + if !argChanged { + visor.conf.Apps[i].Args = append(visor.conf.Apps[i].Args, argName, value) + } + + if v, ok := visor.appsConf[appName]; ok { + v.Args = visor.conf.Apps[i].Args + visor.appsConf[appName] = v + } + } + } + + if configChanged { + return visor.conf.flush() + } + + return nil +} + // UnlinkSocketFiles removes unix socketFiles from file system func UnlinkSocketFiles(socketFiles ...string) error { for _, f := range socketFiles { diff --git a/static/skywire-manager-src/dist/5.534b04fca902cb9c391b.js b/static/skywire-manager-src/dist/5.534b04fca902cb9c391b.js new file mode 100644 index 000000000..d8022c6f4 --- /dev/null +++ b/static/skywire-manager-src/dist/5.534b04fca902cb9c391b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{amrp:function(e){e.exports=JSON.parse('{"common":{"save":"Save","edit":"Edit","cancel":"Cancel","node-key":"Node Key","app-key":"App Key","discovery":"Discovery","downloaded":"Downloaded","uploaded":"Uploaded","delete":"Delete","none":"None","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out."},"tables":{"title":"Order by","sorting-title":"Ordered by:","ascending-order":"(ascending)","descending-order":"(descending)"},"inputs":{"errors":{"key-required":"Key is required.","key-length":"Key must be 66 characters long."}},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online","offline":"Offline","offline-tooltip":"Visor is offline"},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","node-version":"Visor version:","app-protocol-version":"App protocol version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","element-offline":"offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing the data. Retrying..."},"nodes":{"title":"Visor list","state":"State","label":"Label","key":"Key","view-node":"View visor","delete-node":"Remove visor","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","deleted":"Visor removed."},"edit-label":{"title":"Edit label","label":"Label","done":"Label saved.","default-label-warning":"The default label has been used."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"config":{"title":"Discovery configuration","header":"Discovery address","remove":"Remove address","add":"Add address","cant-store":"Unable to store node configuration.","success":"Applying discovery configuration by restarting node process."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."},"update":{"title":"Update","processing":"Looking for updates...","processing-button":"Please wait","no-update":"Currently, there is no update for the visor. The currently installed version is {{ version }}.","update-available":"There is an update available for the visor. Click the \'Install update\' button to continue. The currently installed version is {{ currentVersion }} and the new version is {{ newVersion }}.","done":"The visor is being updated.","update-error":"Could not install the update. Please, try again later.","install":"Install update"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","status":"Status","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled"},"skysocks-settings":{"title":"Skysocks Settings","new-password":"New password (Leave empty to remove the password)","repeat-password":"Repeat password","passwords-not-match":"Passwords do not match.","save":"Save","remove-passowrd-confirmation":"You left the password field empty. Are you sure you want to remove the password?","change-passowrd-confirmation":"Are you sure you want to change the password?","changes-made":"The changes have been made."},"skysocks-client-settings":{"title":"Skysocks-Client Settings","remote-visor-tab":"Remote Visor","history-tab":"History","public-key":"Remote visor public key","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used."},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","list-title":"Transport list","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","details":{"title":"Details","basic":{"title":"Basic info","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","transport-type":"Transport type","success":"Transport created.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}}},"routes":{"title":"Routes","list-title":"Route list","key":"Key","rule":"Rule","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/5.aba2022fd725adcb03f4.js b/static/skywire-manager-src/dist/5.aba2022fd725adcb03f4.js deleted file mode 100644 index 8b3963a49..000000000 --- a/static/skywire-manager-src/dist/5.aba2022fd725adcb03f4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{amrp:function(e){e.exports=JSON.parse('{"common":{"save":"Save","edit":"Edit","cancel":"Cancel","node-key":"Node Key","app-key":"App Key","discovery":"Discovery","downloaded":"Downloaded","uploaded":"Uploaded","delete":"Delete","none":"None","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out."},"tables":{"title":"Order by","sorting-title":"Ordered by:","ascending-order":"(ascending)","descending-order":"(descending)"},"inputs":{"errors":{"key-required":"Key is required.","key-length":"Key must be 66 characters long."}},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online","offline":"Offline","offline-tooltip":"Visor is offline"},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","node-version":"Node version:","app-protocol-version":"App protocol version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","element-offline":"offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing visor data."},"nodes":{"title":"Visor list","state":"State","label":"Label","key":"Key","view-node":"View visor","delete-node":"Remove visor","error-load":"An error occurred while refreshing visors.","empty":"There aren\'t any visors connected to this hypervisor.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","deleted":"Visor removed."},"edit-label":{"title":"Edit label","label":"Label","done":"Label saved.","default-label-warning":"The default label has been used."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"config":{"title":"Discovery configuration","header":"Discovery address","remove":"Remove address","add":"Add address","cant-store":"Unable to store node configuration.","success":"Applying discovery configuration by restarting node process."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."},"update":{"title":"Update","processing":"Looking for updates...","processing-button":"Please wait","no-update":"Currently, there is no update for the visor. The currently installed version is {{ version }}.","update-available":"There is an update available for the visor. Click the \'Install update\' button to continue. The currently installed version is {{ currentVersion }} and the new version is {{ newVersion }}.","done":"The visor is being updated.","update-error":"Could not install the update. Please, try again later.","install":"Install update"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","status":"Status","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled"},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","list-title":"Transport list","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","error-deleting":"It was not possible to complete the delete operation.","empty":"Visor doesn\'t have any transports.","details":{"title":"Details","basic":{"title":"Basic info","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","transport-type":"Transport type","success":"Transport created.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}}},"routes":{"title":"Routes","list-title":"Route list","key":"Key","rule":"Rule","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","error-deleting":"It was not possible to complete the delete operation.","empty":"Visor doesn\'t have any routes.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/6.19fb05ec5694fb1104a2.js b/static/skywire-manager-src/dist/6.19fb05ec5694fb1104a2.js new file mode 100644 index 000000000..ccedeee39 --- /dev/null +++ b/static/skywire-manager-src/dist/6.19fb05ec5694fb1104a2.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{"ZF/7":function(e){e.exports=JSON.parse('{"common":{"save":"Guardar","edit":"Editar","cancel":"Cancelar","node-key":"Llave del Nodo","app-key":"Llave de la App","discovery":"Discovery","downloaded":"Recibido","uploaded":"Enviado","delete":"Borrar","none":"Ninguro","loading-error":"Hubo un error obteniendo los datos. Reintentando...","operation-error":"Hubo un error al intentar completar la operación.","no-connection-error":"No hay conexión a Internet o conexión con el hipervisor.","error":"Error:","refreshed":"Datos refrescados.","options":"Opciones","logout":"Cerrar sesión","logout-error":"Error cerrando la sesión."},"tables":{"title":"Ordenar por","sorting-title":"Ordenado por:","ascending-order":"(ascendente)","descending-order":"(descendente)"},"inputs":{"errors":{"key-required":"La llave es requerida.","key-length":"La llave debe tener 66 caracteres de largo."}},"start":{"title":"Inicio"},"node":{"title":"Detalles del visor","not-found":"Visor no encontrado.","statuses":{"online":"Online","online-tooltip":"El visor está online","offline":"Offline","offline-tooltip":"El visor está offline"},"details":{"node-info":{"title":"Información del visor","label":"Etiqueta:","public-key":"Llave pública:","port":"Puerto:","node-version":"Versión del nodo:","app-protocol-version":"Versión del protocolo de app:","time":{"title":"Tiempo online:","seconds":"unos segundos","minute":"1 minuto","minutes":"{{ time }} minutos","hour":"1 hora","hours":"{{ time }} horas","day":"1 día","days":"{{ time }} días","week":"1 semana","weeks":"{{ time }} semanas"}},"node-health":{"title":"Información de salud","status":"Estatus:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","element-offline":"offline"},"node-traffic-data":"Datos de tráfico"},"tabs":{"info":"Info","apps":"Apps","routing":"Enrutamiento"},"error-load":"Hubo un error al intentar refrescar los datos. Reintentando..."},"nodes":{"title":"Lista de visores","state":"Estado","label":"Etiqueta","key":"Llave","view-node":"Ver visor","delete-node":"Remover visor","error-load":"Hubo un error al intentar refrescar la lista. Reintentando...","empty":"No hay ningún visor conectado a este hypervisor.","delete-node-confirmation":"¿Seguro que desea remover el visor de la lista?","deleted":"Visor removido."},"edit-label":{"title":"Editar etiqueta","label":"Etiqueta","done":"Etiqueta guardada.","default-label-warning":"La etiqueta por defecto ha sido usada."},"settings":{"title":"Configuración","password":{"initial-config-help":"Use esta opción para establecer la contraseña inicial. Después de establecer una contraseña no es posible usar esta opción para modificarla.","help":"Opciones para cambiar la contraseña.","old-password":"Contraseña actual","new-password":"Nueva contraseña","repeat-password":"Repita la contraseña","password-changed":"Contraseña cambiada.","error-changing":"Error cambiando la contraseña.","initial-config":{"title":"Establecer contraseña inicial","password":"Contraseña","repeat-password":"Repita la contraseña","set-password":"Establecer contraseña","done":"Contraseña establecida. Por favor úsela para acceder al sistema.","error":"Error. Por favor asegúrese de que no hubiese establecido la contraseña anteriormente."},"errors":{"bad-old-password":"La contraseña actual introducida no es correcta.","old-password-required":"La contraseña actual es requerida.","new-password-error":"La contraseña debe tener entre 6 y 64 caracteres.","passwords-not-match":"Las contraseñas no coinciden.","default-password":"No utilice la contraseña por defecto (1234)."}},"change-password":"Cambiar contraseña","refresh-rate":"Frecuencia de refrescado","refresh-rate-help":"Tiempo que el sistema espera para actualizar automáticamente los datos.","refresh-rate-confirmation":"Frecuencia de refrescado cambiada.","seconds":"segundos"},"login":{"password":"Contraseña","incorrect-password":"Contraseña incorrecta.","initial-config":"Configurar lanzamiento inicial"},"actions":{"menu":{"terminal":"Terminal","config":"Configuración","update":"Actualizar","reboot":"Reiniciar"},"reboot":{"confirmation":"¿Seguro que desea reiniciar el visor?","done":"El visor se está reiniciando."},"config":{"title":"Configuración de discovery","header":"Dirección de discovery","remove":"Remover dirección","add":"Agregar dirección","cant-store":"No se pudo guardar la configuración del nodo.","success":"Aplicando la configuración de discovery mediante el reinicio del proceso de nodo."},"terminal-options":{"full":"Terminal completa","simple":"Terminal simple"},"terminal":{"title":"Terminal","input-start":"Terminal de Skywire para {{address}}","error":"Error inesperado mientras se intentaba ejecutar el comando."},"update":{"title":"Actualizar","processing":"Buscando actualizaciones...","processing-button":"Por favor espere","no-update":"Actualmente no hay actualizaciones para el visor. Actualmente está instalada la versión {{ version }}.","update-available":"Hay una actualización disponible para el visor. Presione el botón \'Instalar actualización\' para continuar. Actualmente está instalada la versión {{ currentVersion }} y la nueva versión es la {{ newVersion }}.","done":"El visor está siendo actualizado.","update-error":"No se pudo instalar la actualización. Por favor inténtelo nuevamente luego.","install":"Instalar actualización"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"No hay mensajes de log para el rango de fecha seleccionado.","filter-button":"Mostrando sólo logs generados desde:","filter":{"title":"Filtro","filter":"Mostrar sólo logs generados desde","7-days":"Los últimos 7 días","1-month":"Los últimos 30 días","3-months":"Los últimos 3 meses","6-months":"Los últimos 6 meses","1-year":"El último año","all":"mostrar todos"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Aplicaciones","list-title":"Lista de aplicaciones","app-name":"Nombre","port":"Puerto","status":"Estatus","auto-start":"Autoinicio","empty":"El visor no tiene ninguna aplicación.","disable-autostart":"Deshabilitar autoinicio","enable-autostart":"Habilitar autoinicio","autostart-disabled":"Autoinicio deshabilitado","autostart-enabled":"Autoinicio habilitado"},"stop-app":"Detener","start-app":"Iniciar","view-logs":"Ver logs","stop-confirmation":"¿Seguro que desea detener la aplicación?","stop-selected-confirmation":"¿Seguro que desea detener las aplicaciones seleccionadas?","disable-autostart-confirmation":"¿Seguro que desea deshabilitar el autoinicio de la aplicación?","enable-autostart-confirmation":"¿Seguro que desea habilitar el autoinicio de la aplicación?","disable-autostart-selected-confirmation":"¿Seguro que desea deshabilitar el autoinicio de las aplicaciones seleccionadas?","enable-autostart-selected-confirmation":"¿Seguro que desea habilitar el autoinicio de las aplicaciones seleccionadas?","operation-completed":"Operación completada.","operation-unnecessary":"La selección ya tiene la configuración solicitada.","status-running":"Corriendo","status-stopped":"Detenida","status-failed":"Fallida","status-running-tooltip":"La aplicación está actualmente corriendo","status-stopped-tooltip":"La aplicación está actualmente detenida","status-failed-tooltip":"Algo salió mal. Revise los mensajes de la aplicación para más información"},"transports":{"title":"Transportes","list-title":"Lista de transportes","id":"ID","remote-node":"Remoto","type":"Tipo","create":"Crear transporte","delete-confirmation":"¿Seguro que desea borrar el transporte?","delete-selected-confirmation":"¿Seguro que desea borrar los transportes seleccionados?","delete":"Borrar transporte","deleted":"Operación de borrado completada.","empty":"El visor no tiene ningún transporte.","details":{"title":"Detalles","basic":{"title":"Información básica","id":"ID:","local-pk":"Llave pública local:","remote-pk":"Llave pública remota:","type":"Tipo:"},"data":{"title":"Transmisión de datos","uploaded":"Datos enviados:","downloaded":"Datos recibidos:"}},"dialog":{"remote-key":"Llave pública remota","transport-type":"Tipo de transporte","success":"Transporte creado.","errors":{"remote-key-length-error":"La llave pública remota debe tener 66 caracteres.","remote-key-chars-error":"La llave pública remota sólo debe contener caracteres hexadecimales.","transport-type-error":"El tipo de transporte es requerido."}}},"routes":{"title":"Rutas","list-title":"Lista de rutas","key":"Llave","rule":"Regla","delete-confirmation":"¿Seguro que desea borrar la ruta?","delete-selected-confirmation":"¿Seguro que desea borrar las rutas seleccionadas?","delete":"Borrar ruta","deleted":"Operación de borrado completada.","empty":"El visor no tiene ninguna ruta.","details":{"title":"Detalles","basic":{"title":"Información básica","key":"Llave:","rule":"Regla:"},"summary":{"title":"Resumen de regla","keep-alive":"Keep alive:","type":"Tipo de regla:","key-route-id":"ID de la llave de la ruta:"},"specific-fields-titles":{"app":"Campos de applicación","forward":"Campos de reenvío","intermediary-forward":"Campos de reenvío intermedio"},"specific-fields":{"route-id":"ID de la siguiente ruta:","transport-id":"ID del siguiente transporte:","destination-pk":"Llave pública de destino:","source-pk":"Llave pública de origen:","destination-port":"Puerto de destino:","source-port":"Puerto de origen:"}}},"copy":{"tooltip":"Presione para copiar","tooltip-with-text":"{{ text }} (Presione para copiar)","copied":"¡Copiado!"},"selection":{"select-all":"Seleccionar todo","unselect-all":"Deseleccionar todo","delete-all":"Borrar los elementos seleccionados","start-all":"Iniciar las apps seleccionadas","stop-all":"Detener las apps seleccionadas","enable-autostart-all":"Habilitar el autoinicio de las apps seleccionadas","disable-autostart-all":"Deshabilitar el autoinicio de las apps seleccionadas"},"refresh-button":{"seconds":"Refrescado hace unos segundos","minute":"Refrescado hace un minuto","minutes":"Refrescado hace {{ time }} minutos","hour":"Refrescado hace una hora","hours":"Refrescado hace {{ time }} horas","day":"Refrescado hace un día","days":"Refrescado hace {{ time }} días","week":"Refrescado hace una semana","weeks":"Refrescado hace {{ time }} semanas","error-tooltip":"Hubo un error al intentar refrescar los datos. Reintentando automáticamente cada {{ time }} segundos..."},"view-all-link":{"label":"Ver todos los {{ number }} elementos"},"paginator":{"first":"Primera","last":"Última","total":"Total: {{ number }} páginas","select-page-title":"Seleccionar página"},"confirmation":{"header-text":"Confirmación","confirm-button":"Sí","cancel-button":"No","close":"Cerrar","error-header-text":"Error"},"language":{"title":"Seleccionar lenguaje"},"tabs-window":{"title":"Cambiar pestaña"}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/6.c2d1dc21ad77a6345c0e.js b/static/skywire-manager-src/dist/6.c2d1dc21ad77a6345c0e.js deleted file mode 100644 index 46748336d..000000000 --- a/static/skywire-manager-src/dist/6.c2d1dc21ad77a6345c0e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{"ZF/7":function(e){e.exports=JSON.parse('{"common":{"save":"Guardar","edit":"Editar","cancel":"Cancelar","node-key":"Llave del Nodo","app-key":"Llave de la App","discovery":"Discovery","downloaded":"Recibido","uploaded":"Enviado","delete":"Borrar","none":"Ninguro","loading-error":"Hubo un error obteniendo los datos. Reintentando...","operation-error":"Hubo un error al intentar completar la operación.","no-connection-error":"No hay conexión a Internet o conexión con el hipervisor.","refreshed":"Datos refrescados.","options":"Opciones","logout":"Cerrar sesión","logout-error":"Error cerrando la sesión."},"tables":{"title":"Ordenar por","sorting-title":"Ordenado por:","ascending-order":"(ascendente)","descending-order":"(descendente)"},"inputs":{"errors":{"key-required":"La llave es requerida.","key-length":"La llave debe tener 66 caracteres de largo."}},"start":{"title":"Inicio"},"node":{"title":"Detalles del visor","not-found":"Visor no encontrado.","statuses":{"online":"Online","online-tooltip":"El visor está online","offline":"Offline","offline-tooltip":"El visor está offline"},"details":{"node-info":{"title":"Información del visor","label":"Etiqueta:","public-key":"Llave pública:","port":"Puerto:","node-version":"Versión del nodo:","app-protocol-version":"Versión del protocolo de app:","time":{"title":"Tiempo online:","seconds":"unos segundos","minute":"1 minuto","minutes":"{{ time }} minutos","hour":"1 hora","hours":"{{ time }} horas","day":"1 día","days":"{{ time }} días","week":"1 semana","weeks":"{{ time }} semanas"}},"node-health":{"title":"Información de salud","status":"Estatus:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","element-offline":"offline"},"node-traffic-data":"Datos de tráfico"},"tabs":{"info":"Info","apps":"Apps","routing":"Enrutamiento"},"error-load":"Hubo un error al intentar refrescar los datos del visor."},"nodes":{"title":"Lista de visores","state":"Estado","label":"Etiqueta","key":"Llave","view-node":"Ver visor","delete-node":"Remover visor","error-load":"Hubo un error al intentar refrescar los visores.","empty":"No hay ningún visor conectado a este hypervisor.","delete-node-confirmation":"¿Seguro que desea remover el visor de la lista?","deleted":"Visor removido."},"edit-label":{"title":"Editar etiqueta","label":"Etiqueta","done":"Etiqueta guardada.","default-label-warning":"La etiqueta por defecto ha sido usada."},"settings":{"title":"Configuración","password":{"initial-config-help":"Use esta opción para establecer la contraseña inicial. Después de establecer una contraseña no es posible usar esta opción para modificarla.","help":"Opciones para cambiar la contraseña.","old-password":"Contraseña actual","new-password":"Nueva contraseña","repeat-password":"Repita la contraseña","password-changed":"Contraseña cambiada.","error-changing":"Error cambiando la contraseña.","initial-config":{"title":"Establecer contraseña inicial","password":"Contraseña","repeat-password":"Repita la contraseña","set-password":"Establecer contraseña","done":"Contraseña establecida. Por favor úsela para acceder al sistema.","error":"Error. Por favor asegúrese de que no hubiese establecido la contraseña anteriormente."},"errors":{"bad-old-password":"La contraseña actual introducida no es correcta.","old-password-required":"La contraseña actual es requerida.","new-password-error":"La contraseña debe tener entre 6 y 64 caracteres.","passwords-not-match":"Las contraseñas no coinciden.","default-password":"No utilice la contraseña por defecto (1234)."}},"change-password":"Cambiar contraseña","refresh-rate":"Frecuencia de refrescado","refresh-rate-help":"Tiempo que el sistema espera para actualizar automáticamente los datos.","refresh-rate-confirmation":"Frecuencia de refrescado cambiada.","seconds":"segundos"},"login":{"password":"Contraseña","incorrect-password":"Contraseña incorrecta.","initial-config":"Configurar lanzamiento inicial"},"actions":{"menu":{"terminal":"Terminal","config":"Configuración","update":"Actualizar","reboot":"Reiniciar"},"reboot":{"confirmation":"¿Seguro que desea reiniciar el visor?","done":"El visor se está reiniciando."},"config":{"title":"Configuración de discovery","header":"Dirección de discovery","remove":"Remover dirección","add":"Agregar dirección","cant-store":"No se pudo guardar la configuración del nodo.","success":"Aplicando la configuración de discovery mediante el reinicio del proceso de nodo."},"terminal-options":{"full":"Terminal completa","simple":"Terminal simple"},"terminal":{"title":"Terminal","input-start":"Terminal de Skywire para {{address}}","error":"Error inesperado mientras se intentaba ejecutar el comando."},"update":{"title":"Actualizar","processing":"Buscando actualizaciones...","processing-button":"Por favor espere","no-update":"Actualmente no hay actualizaciones para el visor. Actualmente está instalada la versión {{ version }}.","update-available":"Hay una actualización disponible para el visor. Presione el botón \'Instalar actualización\' para continuar. Actualmente está instalada la versión {{ currentVersion }} y la nueva versión es la {{ newVersion }}.","done":"El visor está siendo actualizado.","update-error":"No se pudo instalar la actualización. Por favor inténtelo nuevamente luego.","install":"Instalar actualización"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"No hay mensajes de log para el rango de fecha seleccionado.","filter-button":"Mostrando sólo logs generados desde:","filter":{"title":"Filtro","filter":"Mostrar sólo logs generados desde","7-days":"Los últimos 7 días","1-month":"Los últimos 30 días","3-months":"Los últimos 3 meses","6-months":"Los últimos 6 meses","1-year":"El último año","all":"mostrar todos"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Aplicaciones","list-title":"Lista de aplicaciones","app-name":"Nombre","port":"Puerto","status":"Estatus","auto-start":"Autoinicio","empty":"El visor no tiene ninguna aplicación.","disable-autostart":"Deshabilitar autoinicio","enable-autostart":"Habilitar autoinicio","autostart-disabled":"Autoinicio deshabilitado","autostart-enabled":"Autoinicio habilitado"},"stop-app":"Detener","start-app":"Iniciar","view-logs":"Ver logs","error":"Ha ocurrido un error y no ha sido posible realizar la operación.","stop-confirmation":"¿Seguro que desea detener la aplicación?","stop-selected-confirmation":"¿Seguro que desea detener las aplicaciones seleccionadas?","disable-autostart-confirmation":"¿Seguro que desea deshabilitar el autoinicio de la aplicación?","enable-autostart-confirmation":"¿Seguro que desea habilitar el autoinicio de la aplicación?","disable-autostart-selected-confirmation":"¿Seguro que desea deshabilitar el autoinicio de las aplicaciones seleccionadas?","enable-autostart-selected-confirmation":"¿Seguro que desea habilitar el autoinicio de las aplicaciones seleccionadas?","operation-completed":"Operación completada.","status-running":"Corriendo","status-stopped":"Detenida","status-failed":"Fallida","status-running-tooltip":"La aplicación está actualmente corriendo","status-stopped-tooltip":"La aplicación está actualmente detenida","status-failed-tooltip":"Algo salió mal. Revise los mensajes de la aplicación para más información"},"transports":{"title":"Transportes","list-title":"Lista de transportes","id":"ID","remote-node":"Remoto","type":"Tipo","create":"Crear transporte","delete-confirmation":"¿Seguro que desea borrar el transporte?","delete-selected-confirmation":"¿Seguro que desea borrar los transportes seleccionados?","delete":"Borrar transporte","deleted":"Operación de borrado completada.","error-deleting":"No fue posible completar la operación de borrado.","empty":"El visor no tiene ningún transporte.","details":{"title":"Detalles","basic":{"title":"Información básica","id":"ID:","local-pk":"Llave pública local:","remote-pk":"Llave pública remota:","type":"Tipo:"},"data":{"title":"Transmisión de datos","uploaded":"Datos enviados:","downloaded":"Datos recibidos:"}},"dialog":{"remote-key":"Llave pública remota","transport-type":"Tipo de transporte","success":"Transporte creado.","errors":{"remote-key-length-error":"La llave pública remota debe tener 66 caracteres.","remote-key-chars-error":"La llave pública remota sólo debe contener caracteres hexadecimales.","transport-type-error":"El tipo de transporte es requerido."}}},"routes":{"title":"Rutas","list-title":"Lista de rutas","key":"Llave","rule":"Regla","delete-confirmation":"¿Seguro que desea borrar la ruta?","delete-selected-confirmation":"¿Seguro que desea borrar las rutas seleccionadas?","delete":"Borrar ruta","deleted":"Operación de borrado completada.","error-deleting":"No fue posible completar la operación de borrado.","empty":"El visor no tiene ninguna ruta.","details":{"title":"Detalles","basic":{"title":"Información básica","key":"Llave:","rule":"Regla:"},"summary":{"title":"Resumen de regla","keep-alive":"Keep alive:","type":"Tipo de regla:","key-route-id":"ID de la llave de la ruta:"},"specific-fields-titles":{"app":"Campos de applicación","forward":"Campos de reenvío","intermediary-forward":"Campos de reenvío intermedio"},"specific-fields":{"route-id":"ID de la siguiente ruta:","transport-id":"ID del siguiente transporte:","destination-pk":"Llave pública de destino:","source-pk":"Llave pública de origen:","destination-port":"Puerto de destino:","source-port":"Puerto de origen:"}}},"copy":{"tooltip":"Presione para copiar","tooltip-with-text":"{{ text }} (Presione para copiar)","copied":"¡Copiado!"},"selection":{"select-all":"Seleccionar todo","unselect-all":"Deseleccionar todo","delete-all":"Borrar los elementos seleccionados","start-all":"Iniciar las apps seleccionadas","stop-all":"Detener las apps seleccionadas","enable-autostart-all":"Habilitar el autoinicio de las apps seleccionadas","disable-autostart-all":"Deshabilitar el autoinicio de las apps seleccionadas"},"refresh-button":{"seconds":"Refrescado hace unos segundos","minute":"Refrescado hace un minuto","minutes":"Refrescado hace {{ time }} minutos","hour":"Refrescado hace una hora","hours":"Refrescado hace {{ time }} horas","day":"Refrescado hace un día","days":"Refrescado hace {{ time }} días","week":"Refrescado hace una semana","weeks":"Refrescado hace {{ time }} semanas","error-tooltip":"Hubo un error al intentar refrescar los datos. Reintentando automáticamente cada {{ time }} segundos..."},"view-all-link":{"label":"Ver todos los {{ number }} elementos"},"paginator":{"first":"Primera","last":"Última","total":"Total: {{ number }} páginas","select-page-title":"Seleccionar página"},"confirmation":{"header-text":"Confirmación","confirm-button":"Sí","cancel-button":"No","close":"Cerrar","error-header-text":"Error"},"language":{"title":"Seleccionar lenguaje"},"tabs-window":{"title":"Cambiar pestaña"}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/7.34d19951821dd20a8836.js b/static/skywire-manager-src/dist/7.34d19951821dd20a8836.js deleted file mode 100644 index c3618d084..000000000 --- a/static/skywire-manager-src/dist/7.34d19951821dd20a8836.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{bIFx:function(e){e.exports=JSON.parse('{"common":{"save":"Save","edit":"Edit","cancel":"Cancel","node-key":"Node Key","app-key":"App Key","discovery":"Discovery","downloaded":"Downloaded","uploaded":"Uploaded","delete":"Delete","none":"None","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out."},"tables":{"title":"Order by","sorting-title":"Ordered by:","ascending-order":"(ascending)","descending-order":"(descending)"},"inputs":{"errors":{"key-required":"Key is required.","key-length":"Key must be 66 characters long."}},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online","offline":"Offline","offline-tooltip":"Visor is offline"},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","node-version":"Node version:","app-protocol-version":"App protocol version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","element-offline":"offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing visor data."},"nodes":{"title":"Visor list","state":"State","label":"Label","key":"Key","view-node":"View visor","delete-node":"Remove visor","error-load":"An error occurred while refreshing visors.","empty":"There aren\'t any visors connected to this hypervisor.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","deleted":"Visor removed."},"edit-label":{"title":"Edit label","label":"Label","done":"Label saved.","default-label-warning":"The default label has been used."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"config":{"title":"Discovery configuration","header":"Discovery address","remove":"Remove address","add":"Add address","cant-store":"Unable to store node configuration.","success":"Applying discovery configuration by restarting node process."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."},"update":{"title":"Update","processing":"Looking for updates...","processing-button":"Please wait","no-update":"Currently, there is no update for the visor. The currently installed version is {{ version }}.","update-available":"There is an update available for the visor. Click the \'Install update\' button to continue. The currently installed version is {{ currentVersion }} and the new version is {{ newVersion }}.","done":"The visor is being updated.","update-error":"Could not install the update. Please, try again later.","install":"Install update"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","status":"Status","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled"},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","list-title":"Transport list","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","error-deleting":"It was not possible to complete the delete operation.","empty":"Visor doesn\'t have any transports.","details":{"title":"Details","basic":{"title":"Basic info","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","transport-type":"Transport type","success":"Transport created.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}}},"routes":{"title":"Routes","list-title":"Route list","key":"Key","rule":"Rule","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","error-deleting":"It was not possible to complete the delete operation.","empty":"Visor doesn\'t have any routes.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/7.8c23fdd0365a9377b6f9.js b/static/skywire-manager-src/dist/7.8c23fdd0365a9377b6f9.js new file mode 100644 index 000000000..ac0c8e454 --- /dev/null +++ b/static/skywire-manager-src/dist/7.8c23fdd0365a9377b6f9.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{bIFx:function(e){e.exports=JSON.parse('{"common":{"save":"Save","edit":"Edit","cancel":"Cancel","node-key":"Node Key","app-key":"App Key","discovery":"Discovery","downloaded":"Downloaded","uploaded":"Uploaded","delete":"Delete","none":"None","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out."},"tables":{"title":"Order by","sorting-title":"Ordered by:","ascending-order":"(ascending)","descending-order":"(descending)"},"inputs":{"errors":{"key-required":"Key is required.","key-length":"Key must be 66 characters long."}},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online","offline":"Offline","offline-tooltip":"Visor is offline"},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","node-version":"Node version:","app-protocol-version":"App protocol version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","element-offline":"offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing the data. Retrying..."},"nodes":{"title":"Visor list","state":"State","label":"Label","key":"Key","view-node":"View visor","delete-node":"Remove visor","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","deleted":"Visor removed."},"edit-label":{"title":"Edit label","label":"Label","done":"Label saved.","default-label-warning":"The default label has been used."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"config":{"title":"Discovery configuration","header":"Discovery address","remove":"Remove address","add":"Add address","cant-store":"Unable to store node configuration.","success":"Applying discovery configuration by restarting node process."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."},"update":{"title":"Update","processing":"Looking for updates...","processing-button":"Please wait","no-update":"Currently, there is no update for the visor. The currently installed version is {{ version }}.","update-available":"There is an update available for the visor. Click the \'Install update\' button to continue. The currently installed version is {{ currentVersion }} and the new version is {{ newVersion }}.","done":"The visor is being updated.","update-error":"Could not install the update. Please, try again later.","install":"Install update"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","status":"Status","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled"},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","list-title":"Transport list","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","details":{"title":"Details","basic":{"title":"Basic info","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","transport-type":"Transport type","success":"Transport created.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}}},"routes":{"title":"Routes","list-title":"Route list","key":"Key","rule":"Rule","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/static/skywire-manager-src/dist/index.html b/static/skywire-manager-src/dist/index.html index 0e56c3be7..32e53f785 100644 --- a/static/skywire-manager-src/dist/index.html +++ b/static/skywire-manager-src/dist/index.html @@ -10,5 +10,5 @@