├── web ├── public │ ├── robots.txt │ ├── images │ │ ├── guvnor.png │ │ ├── favicon.png │ │ ├── guvnor@2x.png │ │ ├── tableflip.png │ │ ├── tableflip@2x.png │ │ ├── tableflip-colour.png │ │ └── tableflip@2x-colour.png │ ├── apple-touch-icon.png │ ├── css │ │ ├── app.styl │ │ ├── app │ │ │ ├── apps.styl │ │ │ ├── processes.styl │ │ │ ├── app.styl │ │ │ ├── host.styl │ │ │ ├── process.styl │ │ │ ├── exceptions.styl │ │ │ └── hosts.styl │ │ └── _variables.styl │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── font-mfizz.eot │ │ ├── font-mfizz.ttf │ │ ├── font-mfizz.woff │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff │ └── javascript │ │ └── highcharts │ │ ├── README.md │ │ ├── modules │ │ └── no-data-to-display.js │ │ └── themes │ │ ├── grid-light.js │ │ └── skies.js ├── templates │ ├── includes │ │ ├── confirm.hbs │ │ ├── process │ │ │ ├── logs.hbs │ │ │ ├── exceptions.hbs │ │ │ ├── exceptionlist │ │ │ │ ├── empty.hbs │ │ │ │ └── entry.hbs │ │ │ ├── snapshotlist │ │ │ │ ├── empty.hbs │ │ │ │ └── entry.hbs │ │ │ ├── loglist │ │ │ │ └── entry.hbs │ │ │ ├── overview │ │ │ │ ├── cpu.hbs │ │ │ │ ├── memory.hbs │ │ │ │ ├── latency.hbs │ │ │ │ └── running.hbs │ │ │ ├── startOrRemove.hbs │ │ │ └── start.hbs │ │ ├── apps │ │ │ ├── console.hbs │ │ │ ├── line.hbs │ │ │ ├── setting.hbs │ │ │ ├── empty.hbs │ │ │ ├── refs.hbs │ │ │ ├── install.hbs │ │ │ └── app.hbs │ │ ├── processlist │ │ │ ├── empty.hbs │ │ │ └── process.hbs │ │ ├── host │ │ │ ├── resources.hbs │ │ │ └── system.hbs │ │ ├── hostlist │ │ │ ├── host.hbs │ │ │ └── process.hbs │ │ └── modal.hbs │ ├── pages │ │ ├── host │ │ │ ├── connecting.hbs │ │ │ ├── connectiontimedout.hbs │ │ │ ├── timeout.hbs │ │ │ ├── networkdown.hbs │ │ │ ├── error.hbs │ │ │ ├── errorconnecting.hbs │ │ │ ├── connectionrefused.hbs │ │ │ ├── connectionreset.hbs │ │ │ ├── overview.hbs │ │ │ ├── hostnotfound.hbs │ │ │ ├── incompatible.hbs │ │ │ ├── badsignature.hbs │ │ │ ├── install.hbs │ │ │ ├── processes.hbs │ │ │ └── apps.hbs │ │ ├── loadinghosts.hbs │ │ ├── nohosts.hbs │ │ └── process │ │ │ ├── overview.hbs │ │ │ ├── started.hbs │ │ │ ├── stopping.hbs │ │ │ ├── restarting.hbs │ │ │ ├── uninitialised.hbs │ │ │ ├── starting.hbs │ │ │ ├── stopped.hbs │ │ │ ├── unresponsive.hbs │ │ │ ├── exceptions.hbs │ │ │ ├── paused.hbs │ │ │ ├── errored.hbs │ │ │ ├── aborted.hbs │ │ │ ├── failed.hbs │ │ │ ├── logs.hbs │ │ │ └── snapshots.hbs │ ├── buttons │ │ ├── debug.hbs │ │ ├── stop.hbs │ │ ├── remove.hbs │ │ ├── start.hbs │ │ ├── gc.hbs │ │ ├── restart.hbs │ │ ├── workeradd.hbs │ │ ├── snapshot.hbs │ │ └── workerremove.hbs │ ├── forms │ │ └── controls │ │ │ ├── select.hbs │ │ │ ├── input.hbs │ │ │ ├── checkbox.hbs │ │ │ ├── tuple.hbs │ │ │ ├── element.hbs │ │ │ └── array.hbs │ ├── head.hbs │ └── body.hbs └── client │ ├── forms │ ├── envProps.js │ ├── envProp.js │ ├── refs.js │ ├── install.js │ ├── controls │ │ └── element.js │ └── app.js │ ├── pages │ ├── host │ │ ├── error.js │ │ ├── timeout.js │ │ ├── badsignature.js │ │ ├── connecting.js │ │ ├── hostnotfound.js │ │ ├── networkdown.js │ │ ├── connectionrefused.js │ │ ├── connectionreset.js │ │ ├── errorconnecting.js │ │ ├── connectiontimedout.js │ │ ├── incompatible.js │ │ ├── processes.js │ │ └── overview.js │ ├── process │ │ ├── started.js │ │ ├── stopping.js │ │ ├── restarting.js │ │ ├── uninitialised.js │ │ ├── starting.js │ │ ├── paused.js │ │ ├── aborted.js │ │ ├── errored.js │ │ ├── failed.js │ │ ├── stopped.js │ │ ├── exceptions.js │ │ ├── snapshots.js │ │ ├── unresponsive.js │ │ ├── overview.js │ │ └── logs.js │ ├── nohosts.js │ ├── loadinghosts.js │ ├── base.js │ ├── host.js │ └── process.js │ ├── views │ ├── apps │ │ ├── empty.js │ │ ├── line.js │ │ ├── refs.js │ │ ├── install.js │ │ └── console.js │ ├── processlist │ │ ├── empty.js │ │ └── process.js │ ├── process │ │ ├── exceptionlist │ │ │ ├── empty.js │ │ │ └── entry.js │ │ ├── snapshotlist │ │ │ ├── empty.js │ │ │ └── entry.js │ │ ├── loglist │ │ │ └── entry.js │ │ └── start.js │ ├── host │ │ └── system.js │ ├── confirm.js │ └── hostlist │ │ ├── host.js │ │ └── process.js │ ├── models │ ├── hosts.js │ ├── apps.js │ ├── user.js │ ├── installation.js │ ├── logs.js │ ├── snapshots.js │ ├── exceptions.js │ ├── users.js │ ├── start.js │ ├── snapshot.js │ ├── app.js │ ├── exception.js │ └── log.js │ ├── helpers │ └── notification.js │ └── buttons │ ├── debug.js │ ├── workeradd.js │ ├── workerremove.js │ ├── remove.js │ ├── stop.js │ ├── gc.js │ └── restart.js ├── test ├── integration │ └── fixtures │ │ ├── .gitignore │ │ ├── first-tick-crash.js │ │ ├── hello-world.js │ │ ├── 6-second-crash.js │ │ ├── hello-world.coffee │ │ ├── arguments.js │ │ ├── exec-arguments.js │ │ ├── remote-executor.js │ │ ├── crash-on-message.js │ │ ├── crashy.js │ │ ├── intermittently-crashy.js │ │ ├── exceptional.js │ │ ├── stdin.js │ │ ├── receive-event.js │ │ ├── http-server.js │ │ ├── colourful.js │ │ ├── talky.js │ │ ├── jibberjabber.js │ │ ├── exec.js │ │ ├── siglisten.js │ │ └── log-daemon-messages.js ├── suite.js ├── lib │ ├── daemon │ │ ├── domain │ │ │ └── RemoteUserTest.js │ │ ├── common │ │ │ ├── LatencyMonitorTest.js │ │ │ ├── UserInfoTest.js │ │ │ ├── ExceptionHandlerTest.js │ │ │ ├── ConfigLoaderTest.js │ │ │ └── LogRedirectorTest.js │ │ ├── cluster │ │ │ └── ClusterProcessWrapperTest.js │ │ ├── StartupNotifierTest.js │ │ └── rpc │ │ │ └── AdminRPCTest.js │ ├── common │ │ ├── CryptoTest.js │ │ └── ManagedAppTest.js │ ├── remote │ │ └── RemoteProcessTest.js │ └── cli │ │ └── TableTest.js └── web │ └── client │ └── models │ ├── snapshotsTest.js │ └── snapshotTest.js ├── bin ├── guv └── guv-web ├── guvnor-web-client ├── img ├── cli.png ├── host.png ├── logs.png ├── guvnor.png ├── guvnor.pxm ├── process.png └── exceptions.png ├── index.js ├── lib ├── daemon │ ├── domain │ │ ├── RemoteUser.js │ │ ├── PersistentStore.js │ │ └── PersistentProcessInfoStore.js │ ├── common │ │ ├── LatencyMonitor.js │ │ ├── ConsoleDebugLogger.js │ │ ├── LogRedirector.js │ │ ├── ExceptionHandler.js │ │ ├── RemoteProcessLogger.js │ │ ├── UserInfo.js │ │ └── ConfigLoader.js │ ├── rpc │ │ ├── AdminRPC.js │ │ ├── UserRPC.js │ │ └── tunnel.js │ ├── inspector │ │ └── index.js │ ├── DaemonLogger.js │ ├── util │ │ ├── LogAdder.js │ │ └── FileSystem.js │ ├── StartupNotifier.js │ ├── cluster │ │ └── ClusterProcessWrapper.js │ ├── service │ │ └── PortService.js │ ├── process │ │ └── index.js │ └── action │ │ └── UserProcess.js ├── common │ ├── HelpfulError.js │ ├── ExecSync.js │ ├── ManagedApp.js │ └── Crypto.js ├── web │ ├── resources │ │ ├── Host.js │ │ ├── HostProcessLog.js │ │ ├── HostProcessCPU.js │ │ ├── HostProcessLatency.js │ │ ├── HostProcessException.js │ │ ├── HostProcessHeapUsed.js │ │ ├── HostProcessHeapTotal.js │ │ ├── HostProcessResidentSize.js │ │ ├── HostProcess.js │ │ ├── HostApp.js │ │ ├── HostUser.js │ │ └── HostProcessSnapshot.js │ └── GuvnorWeb.js ├── cli │ ├── Cluster.js │ ├── Table.js │ └── commander.js └── remote │ └── RemoteProcess.js ├── .jshintrc ├── .gitignore ├── vagrant ├── bootstrap-node.sh └── bootstrap.sh ├── guvnor-web-users ├── guvnor-web-hosts ├── .travis.yml ├── docs ├── statuses.md ├── programmatic-access.md ├── web-users.md ├── clusters.md ├── remote.md └── daemon.md ├── UPGRADING.md └── LICENSE /web/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: -------------------------------------------------------------------------------- /test/integration/fixtures/.gitignore: -------------------------------------------------------------------------------- 1 | *.heapsnapshot 2 | -------------------------------------------------------------------------------- /test/suite.js: -------------------------------------------------------------------------------- 1 | module.exports = require('testsuite')(__dirname) 2 | -------------------------------------------------------------------------------- /web/templates/includes/confirm.hbs: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /bin/guv: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require(__dirname + '/../lib/cli')() 4 | -------------------------------------------------------------------------------- /guvnor-web-client: -------------------------------------------------------------------------------- 1 | 2 | ; how often to update the UI 3 | frequency = 5000 4 | -------------------------------------------------------------------------------- /img/cli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/cli.png -------------------------------------------------------------------------------- /img/host.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/host.png -------------------------------------------------------------------------------- /img/logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/logs.png -------------------------------------------------------------------------------- /web/templates/includes/process/logs.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /bin/guv-web: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require(__dirname + '/../lib/web') 4 | -------------------------------------------------------------------------------- /img/guvnor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/guvnor.png -------------------------------------------------------------------------------- /img/guvnor.pxm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/guvnor.pxm -------------------------------------------------------------------------------- /img/process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/process.png -------------------------------------------------------------------------------- /img/exceptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tableflip/guvnor/HEAD/img/exceptions.png -------------------------------------------------------------------------------- /web/templates/includes/process/exceptions.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web/templates/includes/apps/console.hbs: -------------------------------------------------------------------------------- 1 |No exceptions have been thrown
2 | -------------------------------------------------------------------------------- /test/integration/fixtures/first-tick-crash.js: -------------------------------------------------------------------------------- 1 | throw new Error('A sprocket got stuck in the flange') 2 | -------------------------------------------------------------------------------- /web/templates/includes/apps/empty.hbs: -------------------------------------------------------------------------------- 1 |Connection timed out, will attempt to reconnect shortly.
4 |Connection timed out.
5 |Your network connection went down.
5 |Sorry it didn't work out. Maybe check the logs?
5 |Sorry it didn't work out. Maybe check the logs?
5 |Is guvnor running on the remote machine?
5 |{{model.stack}}Has something disrupted your network conneciton?
5 |Either the configured hostname is wrong or your DNS is b0rked
5 |{{name}} is running a version of guvnor incompatible with this version of guvnor-web
4 |Please run a version that satisfies {{requiredVersion}}.
5 |This usually means that you did not configure guvnor-web correctly.
5 |Please see the README entry about adding remote users.
6 |{{model.name}} started...
11 |{{model.name}} stopping...
11 |{{model.name}} restarting...
11 |{{model.name}} uninitialised...
11 |{{model.name}} starting...
11 | 12 |{{model.name}} is not running.
11 | 12 | 13 |{{model.name}} is unresponsive. You may try to debug, restart or stop the process.
11 | 12 | 13 | 14 |{{model.name}} errored.
12 |This means an error was thrown by your module.
13 |Please check the exception list or logs for more information.
14 |{{model.name}} was aborted because it failed to start too many times.
12 |Please use the logs and exception tabs to diagnose the problem and the start button to try again.
13 |{{model.name}} failed to initialise.
12 |This usually means something was wrong with the process configuration.
13 |Please double check the script path, current working directory, user/group, etc.
14 || Title | 14 |Pid | 15 |Uptime | 16 |Restarts | 17 |Memory | 18 |CPU | 19 |
|---|
| Date | 15 |Size | 16 |Path | 17 |18 | |
|---|
| Name | 15 |User | 16 |Ref | 17 |URL | 18 |19 | |
|---|
| Hostname | 10 |Platform | 11 |Arch | 12 |Release | 13 |Guvnor | 14 |Engine | 15 |Uptime | 16 |
|---|---|---|---|---|---|---|
| {{model.hostname}} | 21 |{{model.platform}} | 22 |{{model.arch}} | 23 |{{model.release}} | 24 |{{model.guvnor}} | 25 |{{model.engine}} | 26 |{{model.uptimeFormatted}} | 27 |
{{model.name}} has been running for {{model.uptimeFormatted}} with {{model.restarts}} restart(s).
12 |The current pid is {{model.pid}} and it's running as {{model.user}}:{{model.group}}.
13 | 14 | 15 | 16 | 17 | 18 | 19 | {{#if model.cluster}} 20 | 21 | 22 | {{/if}} 23 |