1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 13:29:41 +02:00

feat(cli): add a --no-analytics flag to disable google analytics (#601)

This commit is contained in:
Anthony Lapenna 2017-02-14 12:37:37 +13:00 committed by GitHub
parent 66c574f74d
commit 73082f1674
8 changed files with 45 additions and 33 deletions

View file

@ -22,18 +22,19 @@ func (*Service) ParseFlags(version string) (*portainer.CLIFlags, error) {
kingpin.Version(version) kingpin.Version(version)
flags := &portainer.CLIFlags{ flags := &portainer.CLIFlags{
Endpoint: kingpin.Flag("host", "Dockerd endpoint").Short('H').String(), Endpoint: kingpin.Flag("host", "Dockerd endpoint").Short('H').String(),
Logo: kingpin.Flag("logo", "URL for the logo displayed in the UI").String(), Logo: kingpin.Flag("logo", "URL for the logo displayed in the UI").String(),
Labels: pairs(kingpin.Flag("hide-label", "Hide containers with a specific label in the UI").Short('l')), Labels: pairs(kingpin.Flag("hide-label", "Hide containers with a specific label in the UI").Short('l')),
Addr: kingpin.Flag("bind", "Address and port to serve Portainer").Default(defaultBindAddress).Short('p').String(), Addr: kingpin.Flag("bind", "Address and port to serve Portainer").Default(defaultBindAddress).Short('p').String(),
Assets: kingpin.Flag("assets", "Path to the assets").Default(defaultAssetsDirectory).Short('a').String(), Assets: kingpin.Flag("assets", "Path to the assets").Default(defaultAssetsDirectory).Short('a').String(),
Data: kingpin.Flag("data", "Path to the folder where the data is stored").Default(defaultDataDirectory).Short('d').String(), Data: kingpin.Flag("data", "Path to the folder where the data is stored").Default(defaultDataDirectory).Short('d').String(),
Templates: kingpin.Flag("templates", "URL to the templates (apps) definitions").Default(defaultTemplatesURL).Short('t').String(), Templates: kingpin.Flag("templates", "URL to the templates (apps) definitions").Default(defaultTemplatesURL).Short('t').String(),
NoAuth: kingpin.Flag("no-auth", "Disable authentication").Default(defaultNoAuth).Bool(), NoAuth: kingpin.Flag("no-auth", "Disable authentication").Default(defaultNoAuth).Bool(),
TLSVerify: kingpin.Flag("tlsverify", "TLS support").Default(defaultTLSVerify).Bool(), NoAnalytics: kingpin.Flag("no-analytics", "Disable Analytics in app").Default(defaultNoAuth).Bool(),
TLSCacert: kingpin.Flag("tlscacert", "Path to the CA").Default(defaultTLSCACertPath).String(), TLSVerify: kingpin.Flag("tlsverify", "TLS support").Default(defaultTLSVerify).Bool(),
TLSCert: kingpin.Flag("tlscert", "Path to the TLS certificate file").Default(defaultTLSCertPath).String(), TLSCacert: kingpin.Flag("tlscacert", "Path to the CA").Default(defaultTLSCACertPath).String(),
TLSKey: kingpin.Flag("tlskey", "Path to the TLS key").Default(defaultTLSKeyPath).String(), TLSCert: kingpin.Flag("tlscert", "Path to the TLS certificate file").Default(defaultTLSCertPath).String(),
TLSKey: kingpin.Flag("tlskey", "Path to the TLS key").Default(defaultTLSKeyPath).String(),
} }
kingpin.Parse() kingpin.Parse()

View file

@ -8,6 +8,7 @@ const (
defaultAssetsDirectory = "." defaultAssetsDirectory = "."
defaultTemplatesURL = "https://raw.githubusercontent.com/portainer/templates/master/templates.json" defaultTemplatesURL = "https://raw.githubusercontent.com/portainer/templates/master/templates.json"
defaultNoAuth = "false" defaultNoAuth = "false"
defaultNoAnalytics = "false"
defaultTLSVerify = "false" defaultTLSVerify = "false"
defaultTLSCACertPath = "/certs/ca.pem" defaultTLSCACertPath = "/certs/ca.pem"
defaultTLSCertPath = "/certs/cert.pem" defaultTLSCertPath = "/certs/cert.pem"

View file

@ -6,6 +6,7 @@ const (
defaultAssetsDirectory = "." defaultAssetsDirectory = "."
defaultTemplatesURL = "https://raw.githubusercontent.com/portainer/templates/master/templates.json" defaultTemplatesURL = "https://raw.githubusercontent.com/portainer/templates/master/templates.json"
defaultNoAuth = "false" defaultNoAuth = "false"
defaultNoAnalytics = "false"
defaultTLSVerify = "false" defaultTLSVerify = "false"
defaultTLSCACertPath = "C:\\certs\\ca.pem" defaultTLSCACertPath = "C:\\certs\\ca.pem"
defaultTLSCertPath = "C:\\certs\\cert.pem" defaultTLSCertPath = "C:\\certs\\cert.pem"

View file

@ -28,6 +28,7 @@ func main() {
HiddenLabels: *flags.Labels, HiddenLabels: *flags.Labels,
Logo: *flags.Logo, Logo: *flags.Logo,
Authentication: !*flags.NoAuth, Authentication: !*flags.NoAuth,
Analytics: !*flags.NoAnalytics,
} }
fileService, err := file.NewService(*flags.Data, "") fileService, err := file.NewService(*flags.Data, "")

View file

@ -13,18 +13,19 @@ type (
// CLIFlags represents the available flags on the CLI. // CLIFlags represents the available flags on the CLI.
CLIFlags struct { CLIFlags struct {
Addr *string Addr *string
Assets *string Assets *string
Data *string Data *string
Endpoint *string Endpoint *string
Labels *[]Pair Labels *[]Pair
Logo *string Logo *string
Templates *string Templates *string
NoAuth *bool NoAuth *bool
TLSVerify *bool NoAnalytics *bool
TLSCacert *string TLSVerify *bool
TLSCert *string TLSCacert *string
TLSKey *string TLSCert *string
TLSKey *string
} }
// Settings represents Portainer settings. // Settings represents Portainer settings.
@ -32,6 +33,7 @@ type (
HiddenLabels []Pair `json:"hiddenLabels"` HiddenLabels []Pair `json:"hiddenLabels"`
Logo string `json:"logo"` Logo string `json:"logo"`
Authentication bool `json:"authentication"` Authentication bool `json:"authentication"`
Analytics bool `json:"analytics"`
} }
// User represent a user account. // User represent a user account.

View file

@ -66,6 +66,7 @@ angular.module('portainer', [
$httpProvider.interceptors.push('jwtInterceptor'); $httpProvider.interceptors.push('jwtInterceptor');
AnalyticsProvider.setAccount('@@CONFIG_GA_ID'); AnalyticsProvider.setAccount('@@CONFIG_GA_ID');
AnalyticsProvider.startOffline(true);
$urlRouterProvider.otherwise('/auth'); $urlRouterProvider.otherwise('/auth');
@ -497,15 +498,19 @@ angular.module('portainer', [
$state.go('auth', {error: 'Your session has expired'}); $state.go('auth', {error: 'Your session has expired'});
}); });
} }
if (state.application.analytics) {
Analytics.offline(false);
Analytics.registerScriptTags();
Analytics.registerTrackers();
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
Analytics.trackPage(toState.url);
Analytics.pageView();
});
}
}, function error(err) { }, function error(err) {
Messages.error("Failure", err, 'Unable to retrieve application settings'); Messages.error("Failure", err, 'Unable to retrieve application settings');
}); });
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
Analytics.trackPage(toState.url);
Analytics.pageView();
});
$rootScope.$state = $state; $rootScope.$state = $state;
}]) }])
// This is your docker url that the api will use to make requests // This is your docker url that the api will use to make requests

View file

@ -24,6 +24,7 @@ angular.module('portainer.services')
} else { } else {
Config.$promise.then(function success(data) { Config.$promise.then(function success(data) {
state.application.authentication = data.authentication; state.application.authentication = data.authentication;
state.application.analytics = data.analytics;
state.application.logo = data.logo; state.application.logo = data.logo;
LocalStorage.storeApplicationState(state.application); LocalStorage.storeApplicationState(state.application);
state.loading = false; state.loading = false;

View file

@ -407,28 +407,28 @@ module.exports = function (grunt) {
command: [ command: [
'docker stop portainer', 'docker stop portainer',
'docker rm portainer', 'docker rm portainer',
'docker run --privileged -d -p 9000:9000 -v /tmp/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer' 'docker run --privileged -d -p 9000:9000 -v /tmp/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer --no-analytics'
].join(';') ].join(';')
}, },
runSwarm: { runSwarm: {
command: [ command: [
'docker stop portainer', 'docker stop portainer',
'docker rm portainer', 'docker rm portainer',
'docker run -d -p 9000:9000 --name portainer portainer -H tcp://10.0.7.10:2375' 'docker run -d -p 9000:9000 --name portainer portainer -H tcp://10.0.7.10:2375 --no-analytics'
].join(';') ].join(';')
}, },
runSwarmLocal: { runSwarmLocal: {
command: [ command: [
'docker stop portainer', 'docker stop portainer',
'docker rm portainer', 'docker rm portainer',
'docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer' 'docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer --no-analytics'
].join(';') ].join(';')
}, },
runSsl: { runSsl: {
command: [ command: [
'docker stop portainer', 'docker stop portainer',
'docker rm portainer', 'docker rm portainer',
'docker run -d -p 9000:9000 -v /tmp/portainer:/data -v /tmp/docker-ssl:/certs --name portainer portainer -H tcp://10.0.7.10:2376 --tlsverify' 'docker run -d -p 9000:9000 -v /tmp/portainer:/data -v /tmp/docker-ssl:/certs --name portainer portainer -H tcp://10.0.7.10:2376 --tlsverify --no-analytics'
].join(';') ].join(';')
}, },
cleanImages: { cleanImages: {