2021-03-28 20:09:31 +08:00
package cmd
import (
2024-01-14 20:29:36 +08:00
"github.com/bakito/adguardhome-sync/pkg/config"
2021-03-28 20:09:31 +08:00
"github.com/bakito/adguardhome-sync/pkg/log"
"github.com/bakito/adguardhome-sync/pkg/sync"
"github.com/spf13/cobra"
2024-01-07 10:05:44 +08:00
"gopkg.in/yaml.v3"
2021-03-28 20:09:31 +08:00
)
// runCmd represents the run command
var doCmd = & cobra . Command {
Use : "run" ,
Short : "Start a synchronisation from origin to replica" ,
Long : ` Synchronizes the configuration form an origin instance to a replica ` ,
2021-04-06 01:26:35 +08:00
RunE : func ( cmd * cobra . Command , args [ ] string ) error {
2021-03-29 02:00:22 +08:00
logger = log . GetLogger ( "run" )
2024-01-14 20:29:36 +08:00
cfg , err := config . Get ( cfgFile , cmd . Flags ( ) )
2021-04-06 03:04:01 +08:00
if err != nil {
2021-03-28 20:09:31 +08:00
logger . Error ( err )
2021-04-06 01:26:35 +08:00
return err
2021-03-28 20:09:31 +08:00
}
2024-01-07 16:55:21 +08:00
if err := cfg . Init ( ) ; err != nil {
logger . Error ( err )
return err
}
2024-01-07 10:05:44 +08:00
if cfg . PrintConfigOnly {
config , err := yaml . Marshal ( cfg )
if err != nil {
logger . Error ( err )
return err
}
logger . Infof ( "Printing adguardhome-sync config (THE APPLICATION WILL NOT START IN THIS MODE): \n%s" ,
string ( config ) )
return nil
}
2021-04-06 01:26:35 +08:00
return sync . Sync ( cfg )
2021-03-28 20:09:31 +08:00
} ,
}
func init ( ) {
rootCmd . AddCommand ( doCmd )
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . String ( config . FlagCron , "" , "The cron expression to run in daemon mode" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagRunOnStart , true , "Run the sync job on start." )
doCmd . PersistentFlags ( ) . Bool ( config . FlagPrintConfigOnly , false , "Prints the configuration only and exists. " +
2024-01-07 10:05:44 +08:00
"Can be used to debug the config E.g: when having authentication issues." )
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . Bool ( config . FlagContinueOnError , false , "If enabled, the synchronisation task " +
2024-01-08 05:03:21 +08:00
"will not fail on single errors, but will log the errors and continue." )
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . Int ( config . FlagApiPort , 8080 , "Sync API Port, the API endpoint will be started to enable remote triggering; if 0 port API is disabled." )
doCmd . PersistentFlags ( ) . String ( config . FlagApiUsername , "" , "Sync API username" )
doCmd . PersistentFlags ( ) . String ( config . FlagApiPassword , "" , "Sync API password" )
doCmd . PersistentFlags ( ) . String ( config . FlagApiDarkMode , "" , "API UI in dark mode" )
2021-03-28 20:09:31 +08:00
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureDhcpServerConfig , true , "Enable DHCP server config feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureDhcpStaticLeases , true , "Enable DHCP server static leases feature" )
2021-11-01 15:56:12 +08:00
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureDnsServerConfig , true , "Enable DNS server config feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureDnsAccessLists , true , "Enable DNS server access lists feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureDnsRewrites , true , "Enable DNS rewrites feature" )
2021-11-02 01:20:14 +08:00
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureGeneral , true , "Enable general settings feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureQueryLog , true , "Enable query log config feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureStats , true , "Enable stats config feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureClient , true , "Enable client settings feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureServices , true , "Enable services sync feature" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagFeatureFilters , true , "Enable filters sync feature" )
2021-03-28 20:09:31 +08:00
2024-01-14 20:29:36 +08:00
doCmd . PersistentFlags ( ) . String ( config . FlagOriginURL , "" , "Origin instance url" )
doCmd . PersistentFlags ( ) . String ( config . FlagOriginWebURL , "" , "Origin instance web url used in the web interface (default: <origin-url>)" )
doCmd . PersistentFlags ( ) . String ( config . FlagOriginApiPath , "/control" , "Origin instance API path" )
doCmd . PersistentFlags ( ) . String ( config . FlagOriginUsername , "" , "Origin instance username" )
doCmd . PersistentFlags ( ) . String ( config . FlagOriginPassword , "" , "Origin instance password" )
doCmd . PersistentFlags ( ) . String ( config . FlagOriginCookie , "" , "If Set, uses a cookie for authentication" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagOriginISV , false , "Enable Origin instance InsecureSkipVerify" )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaURL , "" , "Replica instance url" )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaWebURL , "" , "Replica instance web url used in the web interface (default: <replica-url>)" )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaApiPath , "/control" , "Replica instance API path" )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaUsername , "" , "Replica instance username" )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaPassword , "" , "Replica instance password" )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaCookie , "" , "If Set, uses a cookie for authentication" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagReplicaISV , false , "Enable Replica instance InsecureSkipVerify" )
doCmd . PersistentFlags ( ) . Bool ( config . FlagReplicaAutoSetup , false , "Enable automatic setup of new AdguardHome instances. This replaces the setup wizard." )
doCmd . PersistentFlags ( ) . String ( config . FlagReplicaInterfaceName , "" , "Optional change the interface name of the replica if it differs from the master" )
2021-03-28 20:09:31 +08:00
}