_("Configure, start and stop the OpenWISP agent on this device. Read more about configuration values: <a target='_blank' rel='noopener noreferrer' href='https://github.com/openwisp/openwisp-config'>https://github.com/openwisp/openwisp-config</a>"));
o=s.taboption('advanced',form.Flag,'consistent_key',_('Consistent Key'),_('When using Automatic registration, this feature allows devices to keep the same configuration even if reset or re-flashed. This feature is enabled by default, but must be enabled also in the controller application in order to work.'))
o=s.taboption('advanced',form.Flag,'merge_config',_('Merge Config'),_('If selected, in the event a config item is present in both the remote and local configuration, the remote configuration takes precedence over local configuration.'))
o=s.taboption('advanced',form.DynamicList,'tags',_('Tags'),_('Tags applied to this device.'))
o=s.taboption('advanced',form.Flag,'test_config',_('Test Config'),_('If the agent is unable to reach the controller after applying the downloaded config it will be reverted.'))
o=s.taboption('advanced',form.Value,'test_script',_('Test Script'),'Path to a custom test script if the default Test Config script does not meet your needs.')
o.depends({test_config:'1'})
o.datatype="file"
o=s.taboption('advanced',form.Flag,'hardware_id_key',_('Hardware ID Key'),_('Use a unique hardware ID for device identification, for example a serial number.'))
o=s.taboption('advanced',form.Value,'hardware_id_script',_('Hardware ID Script'),'Path to the script used to return the value of the hardware key.')
o.depends({hardware_id_key:'1'})
o.datatype="file"
o=s.taboption('advanced',form.Value,'bootup_delay',_('Boot Delay'),'Maximum value of the delay after boot before starting OpenWISP service. Expressed in seconds.')
o=s.taboption('advanced',form.Value,'connect_timeout',_('Connect Timeout'),'Value passed to curl --connect-timeout argument, defaults to 15. Expressed in seconds.')
o=s.taboption('advanced',form.Value,'capath',_('CA Path'),_('Use the specified certificate file to verify the peer. The file may contain multiple CA certificates. The certificate(s) must be in PEM format.'))
o.datatype="file"
o=s.taboption('advanced',form.Value,'cacert',_('CA Cert'),_('Use the specified certificate directory to verify the peer. The certificates must be in PEM format, and the directory must have been processed using the c_rehash utility supplied with openssl.'))
o.datatype="file"
o=s.taboption('advanced',form.Value,'pre_reload_hook',_('Pre-reload Hook'),_('Path to pre-reload hook. The hook is not called if the path does not point to an executable script file. This hook is called each time openwisp-config applies a configuration, but before services are reloaded.'))
o.placeholder='/usr/sbin/my_pre_reload_hook'
o.datatype="file"
o=s.taboption('advanced',form.Value,'post_reload_hook',_('Post-reload Hook'),_('Path to post reload hook script. The hook is not called if the path does not point to an executable script file. This hook is called each time openwisp-config applies a configuration, but after services are reloaded.'))