SYMBOL INDEX (3787 symbols across 565 files) FILE: client/constants.js constant BUILD_ENVS (line 1) | const BUILD_ENVS = { constant BASE_URL (line 6) | const BASE_URL = 'control'; FILE: client/src/actions/access.ts type AccessList (line 52) | type AccessList = { type AccessListValues (line 58) | type AccessListValues = { type GetNextClientAccessListArgs (line 64) | type GetNextClientAccessListArgs = { FILE: client/src/api/Api.ts class Api (line 10) | class Api { method makeRequest (line 13) | async makeRequest(path: any, method = 'POST', config: any = {}) { method getGlobalStatus (line 58) | getGlobalStatus() { method testUpstream (line 64) | testUpstream(servers: any) { method getGlobalVersion (line 72) | getGlobalVersion(data: any) { method getUpdate (line 80) | getUpdate() { method getFilteringStatus (line 103) | getFilteringStatus() { method refreshFilters (line 109) | refreshFilters(config: any) { method addFilter (line 118) | addFilter(config: any) { method removeFilter (line 127) | removeFilter(config: any) { method setRules (line 136) | setRules(rules: any) { method setFiltersConfig (line 144) | setFiltersConfig(config: any) { method setFilterUrl (line 152) | setFilterUrl(config: any) { method checkHost (line 160) | checkHost(params: any) { method getParentalStatus (line 174) | getParentalStatus() { method enableParentalControl (line 180) | enableParentalControl() { method disableParentalControl (line 186) | disableParentalControl() { method getSafebrowsingStatus (line 199) | getSafebrowsingStatus() { method enableSafebrowsing (line 205) | enableSafebrowsing() { method disableSafebrowsing (line 211) | disableSafebrowsing() { method getSafesearchStatus (line 222) | getSafesearchStatus() { method updateSafesearch (line 241) | updateSafesearch(data: any) { method changeLanguage (line 258) | async changeLanguage(config: any) { method changeTheme (line 267) | async changeTheme(config: any) { method getDhcpStatus (line 293) | getDhcpStatus() { method getDhcpInterfaces (line 299) | getDhcpInterfaces() { method setDhcpConfig (line 305) | setDhcpConfig(config: any) { method findActiveDhcp (line 313) | findActiveDhcp(req: any) { method addStaticLease (line 321) | addStaticLease(config: any) { method removeStaticLease (line 329) | removeStaticLease(config: any) { method updateStaticLease (line 337) | updateStaticLease(config: any) { method resetDhcp (line 345) | resetDhcp() { method resetDhcpLeases (line 351) | resetDhcpLeases() { method getDefaultAddresses (line 364) | getDefaultAddresses() { method setAllSettings (line 370) | setAllSettings(config: any) { method checkConfig (line 378) | checkConfig(config: any) { method getTlsStatus (line 393) | getTlsStatus() { method setTlsConfig (line 399) | setTlsConfig(config: any) { method validateTlsConfig (line 407) | validateTlsConfig(config: any) { method getClients (line 426) | getClients() { method addClient (line 432) | addClient(config: any) { method deleteClient (line 440) | deleteClient(config: any) { method updateClient (line 448) | updateClient(config: any) { method searchClients (line 456) | searchClients(config: any) { method getAccessList (line 469) | getAccessList() { method setAccessList (line 475) | setAccessList(config: any) { method getRewritesList (line 496) | getRewritesList() { method addRewrite (line 502) | addRewrite(config: any) { method updateRewrite (line 510) | updateRewrite(config: any) { method updateRewriteSettings (line 518) | updateRewriteSettings(config: any) { method deleteRewrite (line 526) | deleteRewrite(config: any) { method getRewriteSettings (line 534) | getRewriteSettings() { method getAllBlockedServices (line 547) | getAllBlockedServices() { method getBlockedServices (line 553) | getBlockedServices() { method updateBlockedServices (line 559) | updateBlockedServices(config: any) { method getStats (line 576) | getStats() { method getStatsConfig (line 582) | getStatsConfig() { method setStatsConfig (line 588) | setStatsConfig(data: any) { method resetStats (line 596) | resetStats() { method getQueryLog (line 611) | getQueryLog(params: any) { method getQueryLogConfig (line 620) | getQueryLogConfig() { method setQueryLogConfig (line 626) | setQueryLogConfig(data: any) { method clearQueryLog (line 634) | clearQueryLog() { method login (line 643) | login(data: any) { method getProfile (line 656) | getProfile() { method setProfile (line 662) | setProfile(data: any) { method getDnsConfig (line 678) | getDnsConfig() { method setDnsConfig (line 684) | setDnsConfig(data: any) { method setProtection (line 694) | setProtection(data: any) { method clearCache (line 704) | clearCache() { FILE: client/src/components/App/index.tsx constant ROUTES (line 50) | const ROUTES = [ FILE: client/src/components/Dashboard/BlockedDomains.tsx type BlockedDomainsProps (line 25) | interface BlockedDomainsProps { FILE: client/src/components/Dashboard/Clients.tsx type ClientsProps (line 150) | interface ClientsProps { FILE: client/src/components/Dashboard/Counters.tsx type RowProps (line 16) | interface RowProps { type CountersProps (line 57) | interface CountersProps { FILE: client/src/components/Dashboard/DomainCell.tsx type renderLinkProps (line 16) | interface renderLinkProps { type DomainCellProps (line 45) | interface DomainCellProps { FILE: client/src/components/Dashboard/QueriedDomains.tsx type QueriedDomainsProps (line 34) | interface QueriedDomainsProps { FILE: client/src/components/Dashboard/Statistics.tsx type StatisticsProps (line 13) | interface StatisticsProps { FILE: client/src/components/Dashboard/StatsCard.tsx type StatsCardProps (line 11) | interface StatsCardProps { FILE: client/src/components/Dashboard/UpstreamAvgTime.tsx type TimeCellProps (line 15) | interface TimeCellProps { type UpstreamAvgTimeProps (line 35) | interface UpstreamAvgTimeProps { FILE: client/src/components/Dashboard/UpstreamResponses.tsx type UpstreamResponsesProps (line 34) | interface UpstreamResponsesProps { FILE: client/src/components/Dashboard/index.tsx type DashboardProps (line 26) | interface DashboardProps { FILE: client/src/components/Filters/Actions.tsx type ActionsProps (line 4) | interface ActionsProps { FILE: client/src/components/Filters/Check/index.tsx type FilteringCheckFormValues (line 15) | type FilteringCheckFormValues = { type Props (line 21) | type Props = { FILE: client/src/components/Filters/CustomRules.tsx type CustomRulesProps (line 17) | interface CustomRulesProps { class CustomRules (line 26) | class CustomRules extends Component { method componentDidMount (line 29) | componentDidMount() { method render (line 67) | render() { FILE: client/src/components/Filters/DnsAllowlist.tsx type DnsAllowlistProps (line 14) | interface DnsAllowlistProps { class DnsAllowlist (line 38) | class DnsAllowlist extends Component { method componentDidMount (line 39) | componentDidMount() { method render (line 78) | render() { FILE: client/src/components/Filters/DnsBlocklist.tsx type DnsBlocklistProps (line 17) | interface DnsBlocklistProps { class DnsBlocklist (line 30) | class DnsBlocklist extends Component { method componentDidMount (line 31) | componentDidMount() { method render (line 88) | render() { FILE: client/src/components/Filters/FiltersList.tsx type Filter (line 33) | type Filter = { type Category (line 40) | type Category = { type Props (line 45) | type Props = { FILE: client/src/components/Filters/Form.tsx type FormValues (line 11) | type FormValues = { type Props (line 23) | type Props = { FILE: client/src/components/Filters/Modal.tsx constant MODAL_TYPE_TO_TITLE_TYPE_MAP (line 15) | const MODAL_TYPE_TO_TITLE_TYPE_MAP = { type ModalProps (line 54) | interface ModalProps { class Modal (line 70) | class Modal extends Component { method render (line 75) | render() { FILE: client/src/components/Filters/Rewrites/Form.tsx type RewriteFormValues (line 8) | interface RewriteFormValues { type Props (line 13) | type Props = { FILE: client/src/components/Filters/Rewrites/Modal.tsx type ModalProps (line 10) | interface ModalProps { FILE: client/src/components/Filters/Rewrites/Table.tsx type TableProps (line 11) | interface TableProps { class Table (line 24) | class Table extends Component { method render (line 117) | render() { FILE: client/src/components/Filters/Rewrites/index.tsx type RewritesProps (line 15) | interface RewritesProps { class Rewrites (line 27) | class Rewrites extends Component { method componentDidMount (line 28) | componentDidMount() { method render (line 68) | render() { FILE: client/src/components/Filters/Services/Form.tsx type BlockedService (line 9) | type BlockedService = { type ServiceGroups (line 16) | type ServiceGroups = { type FormValues (line 20) | type FormValues = { type FormProps (line 24) | interface FormProps { FILE: client/src/components/Filters/Services/ScheduleForm/Modal.tsx constant DAYS_OF_WEEK (line 14) | const DAYS_OF_WEEK = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; constant INITIAL_START_TIME_MS (line 16) | const INITIAL_START_TIME_MS = 0; constant INITIAL_END_TIME_MS (line 17) | const INITIAL_END_TIME_MS = 86340000; type ModalProps (line 19) | interface ModalProps { FILE: client/src/components/Filters/Services/ScheduleForm/TimePeriod.tsx type TimePeriodProps (line 5) | interface TimePeriodProps { FILE: client/src/components/Filters/Services/ScheduleForm/TimeSelect.tsx type TimeSelectProps (line 5) | interface TimeSelectProps { FILE: client/src/components/Filters/Services/ScheduleForm/Timezone.tsx type TimezoneProps (line 7) | interface TimezoneProps { FILE: client/src/components/Filters/Services/ScheduleForm/index.tsx type ScheduleFormProps (line 12) | interface ScheduleFormProps { FILE: client/src/components/Filters/Services/ServiceField.tsx type Props (line 5) | type Props = ControllerRenderProps & { FILE: client/src/components/Filters/Table.tsx type TableProps (line 15) | interface TableProps { class Table (line 26) | class Table extends Component { method render (line 140) | render() { FILE: client/src/components/Header/Menu.tsx constant MENU_ITEMS (line 12) | const MENU_ITEMS = [ constant SETTINGS_ITEMS (line 39) | const SETTINGS_ITEMS = [ constant FILTERS_ITEMS (line 62) | const FILTERS_ITEMS = [ type MenuProps (line 85) | interface MenuProps { class Menu (line 92) | class Menu extends Component { method render (line 142) | render() { FILE: client/src/components/Logs/Cells/ClientCell.tsx type ClientCellProps (line 23) | interface ClientCellProps { FILE: client/src/components/Logs/Cells/DateCell.tsx type DateCellProps (line 8) | interface DateCellProps { FILE: client/src/components/Logs/Cells/DomainCell.tsx type DomainCellProps (line 17) | interface DomainCellProps { FILE: client/src/components/Logs/Cells/HeaderCell.tsx type HeaderCellProps (line 5) | interface HeaderCellProps { FILE: client/src/components/Logs/Cells/IconTooltip.tsx type IconTooltipProps (line 14) | interface IconTooltipProps { FILE: client/src/components/Logs/Cells/ResponseCell.tsx type ResponseCellProps (line 11) | interface ResponseCellProps { FILE: client/src/components/Logs/Cells/helpers/index.ts constant BUTTON_PREFIX (line 4) | const BUTTON_PREFIX = 'btn_'; FILE: client/src/components/Logs/Cells/index.tsx type RowProps (line 44) | interface RowProps { FILE: client/src/components/Logs/Filters/Form.tsx type Props (line 25) | type Props = { FILE: client/src/components/Logs/Filters/SearchField.tsx type Props (line 4) | interface Props extends ComponentProps<'input'> { FILE: client/src/components/Logs/Filters/index.tsx type FiltersProps (line 9) | interface FiltersProps { FILE: client/src/components/Logs/InfiniteTable.tsx type InfiniteTableProps (line 17) | interface InfiniteTableProps { FILE: client/src/components/Logs/index.tsx type SearchFormValues (line 33) | type SearchFormValues = { FILE: client/src/components/ProtectionTimer/index.ts type ProtectionTimerProps (line 10) | interface ProtectionTimerProps { FILE: client/src/components/Settings/Clients/AutoClients.tsx constant COLUMN_MIN_WIDTH (line 19) | const COLUMN_MIN_WIDTH = 200; type AutoClientsProps (line 21) | interface AutoClientsProps { class AutoClients (line 27) | class AutoClients extends Component { method render (line 80) | render() { FILE: client/src/components/Settings/Clients/ClientsTable/ClientsTable.tsx type ClientsTableProps (line 28) | interface ClientsTableProps { FILE: client/src/components/Settings/Clients/Form/components/BlockedServices.tsx type Props (line 8) | type Props = { FILE: client/src/components/Settings/Clients/Form/components/MainSettings.tsx type ProtectionSettings (line 9) | type ProtectionSettings = 'use_global_settings' | 'filtering_enabled' | ... type LogsStatsSettings (line 33) | type LogsStatsSettings = 'ignore_querylog' | 'ignore_statistics'; type Props (line 46) | type Props = { FILE: client/src/components/Settings/Clients/Form/index.tsx type Props (line 38) | type Props = { FILE: client/src/components/Settings/Clients/Form/types.ts type ClientForm (line 1) | type ClientForm = { type SubmitClientForm (line 25) | type SubmitClientForm = Omit & { FILE: client/src/components/Settings/Clients/Modal.tsx type ModalProps (line 47) | interface ModalProps { FILE: client/src/components/Settings/Clients/index.tsx type ClientsProps (line 13) | interface ClientsProps { class Clients (line 26) | class Clients extends Component { method componentDidMount (line 27) | componentDidMount() { method render (line 33) | render() { FILE: client/src/components/Settings/Dhcp/FormDHCPv4.tsx type FormDHCPv4Props (line 18) | type FormDHCPv4Props = { FILE: client/src/components/Settings/Dhcp/FormDHCPv6.tsx type FormDHCPv6Props (line 11) | type FormDHCPv6Props = { FILE: client/src/components/Settings/Dhcp/Interfaces.tsx type RenderInterfaceValuesProps (line 48) | interface RenderInterfaceValuesProps { FILE: client/src/components/Settings/Dhcp/Leases.tsx type LeasesProps (line 13) | interface LeasesProps { class Leases (line 20) | class Leases extends Component { method render (line 57) | render() { FILE: client/src/components/Settings/Dhcp/StaticLeases/Form.tsx type Props (line 19) | type Props = { FILE: client/src/components/Settings/Dhcp/StaticLeases/Modal.tsx type ModalProps (line 13) | interface ModalProps { FILE: client/src/components/Settings/Dhcp/StaticLeases/index.tsx type cellWrapProps (line 14) | interface cellWrapProps { type StaticLeasesProps (line 26) | interface StaticLeasesProps { FILE: client/src/components/Settings/Dhcp/index.tsx type IPv4FormValues (line 43) | type IPv4FormValues = { type IPv6FormValues (line 51) | type IPv6FormValues = { type DhcpFormValues (line 72) | type DhcpFormValues = { constant DEFAULT_V4_VALUES (line 78) | const DEFAULT_V4_VALUES = { constant DEFAULT_V6_VALUES (line 86) | const DEFAULT_V6_VALUES = { FILE: client/src/components/Settings/Dns/Access/Form.tsx type FormData (line 10) | type FormData = { type FormProps (line 56) | type FormProps = { FILE: client/src/components/Settings/Dns/Cache/Form.tsx constant INPUTS_FIELDS (line 13) | const INPUTS_FIELDS = [ type FormData (line 34) | type FormData = { type CacheFormProps (line 42) | type CacheFormProps = { FILE: client/src/components/Settings/Dns/Config/Form.tsx type FormData (line 83) | type FormData = { type Props (line 99) | type Props = { FILE: client/src/components/Settings/Dns/Upstream/Examples.tsx type ExamplesProps (line 5) | interface ExamplesProps { FILE: client/src/components/Settings/Dns/Upstream/Form.tsx constant UPSTREAM_DNS_NAME (line 22) | const UPSTREAM_DNS_NAME = 'upstream_dns'; type FormData (line 24) | type FormData = { type FormProps (line 35) | type FormProps = { FILE: client/src/components/Settings/Encryption/CertificateStatus.tsx type CertificateStatusProps (line 7) | interface CertificateStatusProps { FILE: client/src/components/Settings/Encryption/Form.tsx type EncryptionFormValues (line 76) | type EncryptionFormValues = { type Props (line 93) | type Props = { FILE: client/src/components/Settings/Encryption/KeyStatus.tsx type KeyStatusProps (line 4) | interface KeyStatusProps { FILE: client/src/components/Settings/Encryption/index.tsx type Props (line 12) | type Props = { FILE: client/src/components/Settings/FiltersConfig/index.tsx constant THREE_DAYS_INTERVAL (line 11) | const THREE_DAYS_INTERVAL = DAY * 3; constant SEVEN_DAYS_INTERVAL (line 12) | const SEVEN_DAYS_INTERVAL = DAY * 7; type FormValues (line 26) | type FormValues = { type Props (line 31) | type Props = { FILE: client/src/components/Settings/LogsConfig/Form.tsx type FormValues (line 27) | type FormValues = { type Props (line 36) | type Props = { FILE: client/src/components/Settings/LogsConfig/index.tsx type LogsConfigProps (line 9) | interface LogsConfigProps { class LogsConfig (line 23) | class LogsConfig extends Component { method render (line 54) | render() { FILE: client/src/components/Settings/StatsConfig/Form.tsx type FormValues (line 25) | type FormValues = { type Props (line 41) | type Props = { FILE: client/src/components/Settings/StatsConfig/index.tsx type StatsConfigProps (line 9) | interface StatsConfigProps { class StatsConfig (line 22) | class StatsConfig extends Component { method render (line 51) | render() { FILE: client/src/components/Settings/index.tsx constant ORDER_KEY (line 23) | const ORDER_KEY = 'order'; constant SETTINGS (line 25) | const SETTINGS = { type SettingsProps (line 42) | interface SettingsProps { class Settings (line 83) | class Settings extends Component { method componentDidMount (line 84) | componentDidMount() { method render (line 154) | render() { FILE: client/src/components/SetupGuide/index.tsx type SetupGuideProps (line 12) | interface SetupGuideProps { FILE: client/src/components/Toasts/Toast.tsx type ToastProps (line 8) | interface ToastProps { FILE: client/src/components/ui/Card.tsx type CardProps (line 5) | interface CardProps { FILE: client/src/components/ui/Cell.tsx type CellProps (line 7) | interface CellProps { FILE: client/src/components/ui/CellWrap.tsx type CellWrapProps (line 3) | interface CellWrapProps { FILE: client/src/components/ui/Controls/Checkbox/index.tsx type Props (line 6) | type Props = { FILE: client/src/components/ui/Controls/Input.tsx type Props (line 4) | type Props = ComponentProps<'input'> & { FILE: client/src/components/ui/Controls/Radio.tsx type Props (line 3) | type Props = { FILE: client/src/components/ui/Controls/Select.tsx type SelectProps (line 4) | type SelectProps = ComponentProps<'select'> & { FILE: client/src/components/ui/Controls/Textarea.tsx type Props (line 5) | type Props = ComponentProps<'textarea'> & { FILE: client/src/components/ui/Dropdown.tsx type DropdownProps (line 9) | type DropdownProps = { type DropdownState (line 18) | type DropdownState = { class Dropdown (line 22) | class Dropdown extends Component { method render (line 41) | render() { FILE: client/src/components/ui/EncryptionTopline.tsx constant EXPIRATION_ENUM (line 11) | const EXPIRATION_ENUM = { constant EXPIRATION_STATE (line 17) | const EXPIRATION_STATE = { FILE: client/src/components/ui/Guide/Guide.tsx type renderLiProps (line 13) | interface renderLiProps { type renderDnsPrivacyListProps (line 161) | interface renderDnsPrivacyListProps { type renderContentProps (line 320) | interface renderContentProps { type GuideProps (line 345) | interface GuideProps { FILE: client/src/components/ui/Guide/MobileConfigForm.tsx type FormValues (line 44) | type FormValues = { type Props (line 51) | type Props = { FILE: client/src/components/ui/Line.tsx type LineProps (line 15) | interface LineProps { FILE: client/src/components/ui/Loading.tsx type LoadingProps (line 6) | interface LoadingProps { FILE: client/src/components/ui/LogsSearchLink.tsx type LogsSearchLinkProps (line 9) | interface LogsSearchLinkProps { FILE: client/src/components/ui/PageTitle.tsx type PageTitleProps (line 5) | interface PageTitleProps { FILE: client/src/components/ui/Status.tsx type StatusProps (line 6) | interface StatusProps { FILE: client/src/components/ui/Tab.tsx type TabProps (line 5) | interface TabProps { FILE: client/src/components/ui/Tabs.tsx type TabsProps (line 7) | interface TabsProps { FILE: client/src/components/ui/Tooltip.tsx type TooltipProps (line 10) | interface TooltipProps { type renderTooltipProps (line 23) | interface renderTooltipProps { type renderTriggerProps (line 28) | interface renderTriggerProps { FILE: client/src/components/ui/Topline.tsx type ToplineProps (line 5) | interface ToplineProps { FILE: client/src/components/ui/svg/logo.tsx type Props (line 3) | type Props = { FILE: client/src/configureStore.ts function configureStore (line 6) | function configureStore( FILE: client/src/containers/Clients.ts type DispatchProps (line 19) | type DispatchProps = { FILE: client/src/containers/CustomRules.ts type DispatchProps (line 13) | type DispatchProps = { FILE: client/src/containers/Dashboard.ts type DispatchProps (line 16) | type DispatchProps = { FILE: client/src/containers/DnsRewrites.ts type DispatchProps (line 13) | type DispatchProps = { FILE: client/src/helpers/constants.ts constant R_URL_REQUIRES_PROTOCOL (line 1) | const R_URL_REQUIRES_PROTOCOL = /^https?:\/\/[^/\s]+(\/.*)?$/; constant R_HOST (line 4) | const R_HOST = /^(\*\.)?[\w.-]+$/; constant R_IPV4 (line 6) | const R_IPV4 = /^(?:(?:^|\.)(?:2(?:5[0-5]|[0-4]\d)|1?\d?\d)){4}$/; constant R_IPV6 (line 8) | const R_IPV6 = constant R_CIDR (line 11) | const R_CIDR = constant R_MAC (line 14) | const R_MAC = constant R_MAC_WITHOUT_COLON (line 16) | const R_MAC_WITHOUT_COLON = /^([a-fA-F0-9]{2}){5}([a-fA-F0-9]{2})$|^([a-... constant R_CIDR_IPV6 (line 18) | const R_CIDR_IPV6 = constant R_DOMAIN (line 21) | const R_DOMAIN = /^([a-zA-Z0-9][a-zA-Z0-9-_]*\.)*[a-zA-Z0-9]*[a-zA-Z0-9-... constant R_PATH_LAST_PART (line 23) | const R_PATH_LAST_PART = /\/[^/]*$/; constant R_UNIX_ABSOLUTE_PATH (line 26) | const R_UNIX_ABSOLUTE_PATH = /^(\/[^/\x00]+)+$/; constant R_WIN_ABSOLUTE_PATH (line 29) | const R_WIN_ABSOLUTE_PATH = /^([a-zA-Z]:)?(\\|\/)(?:[^\\/:*?"<>|\x00]+\\... constant R_CLIENT_ID (line 31) | const R_CLIENT_ID = /^[a-z0-9-]{1,63}$/; constant R_IPV4_SUBNET (line 33) | const R_IPV4_SUBNET = /^([0-9]|[1-2][0-9]|3[0-2])?$/; constant R_IPV6_SUBNET (line 35) | const R_IPV6_SUBNET = /^([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])?$/; constant MIN_PASSWORD_LENGTH (line 37) | const MIN_PASSWORD_LENGTH = 8; constant MAX_PASSWORD_LENGTH (line 38) | const MAX_PASSWORD_LENGTH = 72; constant HTML_PAGES (line 40) | const HTML_PAGES = { constant STATS_NAMES (line 46) | const STATS_NAMES = { constant STATUS_COLORS (line 55) | const STATUS_COLORS = { constant REPOSITORY (line 62) | const REPOSITORY = { constant CLIENT_ID_LINK (line 68) | const CLIENT_ID_LINK = 'https://github.com/AdguardTeam/AdGuardHome/wiki/... constant MANUAL_UPDATE_LINK (line 69) | const MANUAL_UPDATE_LINK = 'https://github.com/AdguardTeam/AdGuardHome/w... constant PORT_53_FAQ_LINK (line 70) | const PORT_53_FAQ_LINK = 'https://github.com/AdguardTeam/AdGuardHome/wik... constant PRIVACY_POLICY_LINK (line 71) | const PRIVACY_POLICY_LINK = 'https://link.adtidy.org/forward.html?action... constant UPSTREAM_CONFIGURATION_WIKI_LINK (line 72) | const UPSTREAM_CONFIGURATION_WIKI_LINK = constant FILTERS_RELATIVE_LINK (line 75) | const FILTERS_RELATIVE_LINK = '#filters'; constant ADDRESS_IN_USE_TEXT (line 77) | const ADDRESS_IN_USE_TEXT = 'address already in use'; constant INSTALL_FIRST_STEP (line 79) | const INSTALL_FIRST_STEP = 1; constant INSTALL_TOTAL_STEPS (line 80) | const INSTALL_TOTAL_STEPS = 5; constant SETTINGS_NAMES (line 82) | const SETTINGS_NAMES = { constant STANDARD_DNS_PORT (line 89) | const STANDARD_DNS_PORT = 53; constant STANDARD_WEB_PORT (line 90) | const STANDARD_WEB_PORT = 80; constant STANDARD_HTTPS_PORT (line 91) | const STANDARD_HTTPS_PORT = 443; constant DNS_OVER_TLS_PORT (line 92) | const DNS_OVER_TLS_PORT = 853; constant DNS_OVER_QUIC_PORT (line 93) | const DNS_OVER_QUIC_PORT = 853; constant MIN_PORT (line 94) | const MIN_PORT = 1; constant MAX_PORT (line 95) | const MAX_PORT = 65535; constant EMPTY_DATE (line 97) | const EMPTY_DATE = '0001-01-01T00:00:00Z'; constant DEBOUNCE_TIMEOUT (line 99) | const DEBOUNCE_TIMEOUT = 300; constant DEBOUNCE_FILTER_TIMEOUT (line 100) | const DEBOUNCE_FILTER_TIMEOUT = 500; constant CHECK_TIMEOUT (line 101) | const CHECK_TIMEOUT = 1000; constant HIDE_TOOLTIP_DELAY (line 102) | const HIDE_TOOLTIP_DELAY = 300; constant SHOW_TOOLTIP_DELAY (line 103) | const SHOW_TOOLTIP_DELAY = 200; constant MODAL_OPEN_TIMEOUT (line 104) | const MODAL_OPEN_TIMEOUT = 150; constant UNSAFE_PORTS (line 106) | const UNSAFE_PORTS = [ constant ALL_INTERFACES_IP (line 112) | const ALL_INTERFACES_IP = '0.0.0.0'; constant STATUS_RESPONSE (line 114) | const STATUS_RESPONSE = { constant MODAL_TYPE (line 120) | const MODAL_TYPE = { constant CLIENT_ID (line 133) | const CLIENT_ID = { constant MENU_URLS (line 138) | const MENU_URLS = { constant SETTINGS_URLS (line 144) | const SETTINGS_URLS = { constant FILTERS_URLS (line 152) | const FILTERS_URLS = { constant ENCRYPTION_SOURCE (line 160) | const ENCRYPTION_SOURCE = { constant FILTERED (line 165) | const FILTERED = 'Filtered'; constant NOT_FILTERED (line 166) | const NOT_FILTERED = 'NotFiltered'; constant DISABLED_STATS_INTERVAL (line 168) | const DISABLED_STATS_INTERVAL = 0; constant HOUR (line 170) | const HOUR = 60 * 60 * 1000; constant DAY (line 172) | const DAY = HOUR * 24; constant STATS_INTERVALS_DAYS (line 174) | const STATS_INTERVALS_DAYS = [DAY, DAY * 7, DAY * 30, DAY * 90]; constant QUERY_LOG_INTERVALS_DAYS (line 176) | const QUERY_LOG_INTERVALS_DAYS = [HOUR * 6, DAY, DAY * 7, DAY * 30, DAY ... constant RETENTION_CUSTOM (line 178) | const RETENTION_CUSTOM = 1; constant RETENTION_CUSTOM_INPUT (line 180) | const RETENTION_CUSTOM_INPUT = 'custom_retention_input'; constant CUSTOM_INTERVAL (line 182) | const CUSTOM_INTERVAL = 'customInterval'; constant FILTERS_INTERVALS_HOURS (line 184) | const FILTERS_INTERVALS_HOURS = [0, 1, 12, 24, 72, 168]; constant BLOCKING_MODES (line 188) | const BLOCKING_MODES = { constant THEMES (line 198) | const THEMES = { constant WHOIS_ICONS (line 204) | const WHOIS_ICONS = { constant DEFAULT_LOGS_FILTER (line 211) | const DEFAULT_LOGS_FILTER = { constant DEFAULT_LANGUAGE (line 216) | const DEFAULT_LANGUAGE = 'en'; constant QUERY_LOGS_PAGE_LIMIT (line 218) | const QUERY_LOGS_PAGE_LIMIT = 20; constant LEASES_TABLE_DEFAULT_PAGE_SIZE (line 220) | const LEASES_TABLE_DEFAULT_PAGE_SIZE = 20; constant FILTERED_STATUS (line 222) | const FILTERED_STATUS = { constant RESPONSE_FILTER (line 235) | const RESPONSE_FILTER = { constant RESPONSE_FILTER_QUERIES (line 278) | const RESPONSE_FILTER_QUERIES = Object.values(RESPONSE_FILTER).reduce( constant QUERY_STATUS_COLORS (line 293) | const QUERY_STATUS_COLORS = { constant FILTERED_STATUS_TO_META_MAP (line 301) | const FILTERED_STATUS_TO_META_MAP = { constant DEFAULT_TIME_FORMAT (line 344) | const DEFAULT_TIME_FORMAT = 'HH:mm:ss'; constant LONG_TIME_FORMAT (line 346) | const LONG_TIME_FORMAT = 'HH:mm:ss.SSS'; constant DEFAULT_SHORT_DATE_FORMAT_OPTIONS (line 348) | const DEFAULT_SHORT_DATE_FORMAT_OPTIONS = { constant DEFAULT_DATE_FORMAT_OPTIONS (line 355) | const DEFAULT_DATE_FORMAT_OPTIONS = { constant DETAILED_DATE_FORMAT_OPTIONS (line 364) | const DETAILED_DATE_FORMAT_OPTIONS = { constant SPECIAL_FILTER_ID (line 369) | const SPECIAL_FILTER_ID = { constant BLOCK_ACTIONS (line 378) | const BLOCK_ACTIONS = { constant SCHEME_TO_PROTOCOL_MAP (line 383) | const SCHEME_TO_PROTOCOL_MAP = { constant DNS_REQUEST_OPTIONS (line 391) | const DNS_REQUEST_OPTIONS = { constant DHCP_FORM_NAMES (line 397) | const DHCP_FORM_NAMES = { constant FORM_NAME (line 403) | const FORM_NAME = { constant SMALL_SCREEN_SIZE (line 425) | const SMALL_SCREEN_SIZE = 767; constant MEDIUM_SCREEN_SIZE (line 426) | const MEDIUM_SCREEN_SIZE = 1024; constant SECONDS_IN_DAY (line 428) | const SECONDS_IN_DAY = 60 * 60 * 24; constant UINT32_RANGE (line 430) | const UINT32_RANGE = { constant RETENTION_RANGE (line 435) | const RETENTION_RANGE = { constant DHCP_VALUES_PLACEHOLDERS (line 440) | const DHCP_VALUES_PLACEHOLDERS = { constant DHCP_DESCRIPTION_PLACEHOLDERS (line 452) | const DHCP_DESCRIPTION_PLACEHOLDERS = { constant TOAST_TRANSITION_TIMEOUT (line 467) | const TOAST_TRANSITION_TIMEOUT = 500; constant TOAST_TYPES (line 469) | const TOAST_TYPES = { constant SUCCESS_TOAST_TIMEOUT (line 475) | const SUCCESS_TOAST_TIMEOUT = 5000; constant ONE_SECOND_IN_MS (line 477) | const ONE_SECOND_IN_MS = 1000; constant FAILURE_TOAST_TIMEOUT (line 478) | const FAILURE_TOAST_TIMEOUT = 30000; constant TOAST_TIMEOUTS (line 480) | const TOAST_TIMEOUTS = { constant ADDRESS_TYPES (line 486) | const ADDRESS_TYPES = { constant CACHE_CONFIG_FIELDS (line 493) | const CACHE_CONFIG_FIELDS = { constant COMMENT_LINE_DEFAULT_TOKEN (line 500) | const COMMENT_LINE_DEFAULT_TOKEN = '#'; constant MOBILE_CONFIG_LINKS (line 502) | const MOBILE_CONFIG_LINKS = { constant DISABLE_PROTECTION_TIMINGS (line 508) | const DISABLE_PROTECTION_TIMINGS = { constant LOCAL_TIMEZONE_VALUE (line 516) | const LOCAL_TIMEZONE_VALUE = 'Local'; constant TABLES_MIN_ROWS (line 518) | const TABLES_MIN_ROWS = 5; constant DASHBOARD_TABLES_DEFAULT_PAGE_SIZE (line 520) | const DASHBOARD_TABLES_DEFAULT_PAGE_SIZE = 100; constant TIME_UNITS (line 522) | const TIME_UNITS = { constant DNS_RECORD_TYPES (line 527) | const DNS_RECORD_TYPES = [ FILE: client/src/helpers/helpers.tsx type NestedObject (line 759) | type NestedObject = { type Filter (line 860) | type Filter = { type Rule (line 869) | type Rule = { FILE: client/src/helpers/localStorageHelper.ts constant LOCAL_STORAGE_KEYS (line 1) | const LOCAL_STORAGE_KEYS = { method setItem (line 11) | setItem(key: any, value: any) { method getItem (line 19) | getItem(key: any) { method removeItem (line 29) | removeItem(key: any) { method clear (line 37) | clear() { FILE: client/src/helpers/twosky.ts constant LANGUAGES (line 4) | const LANGUAGES = twosky[0].languages; constant BASE_LOCALE (line 5) | const BASE_LOCALE = twosky[0].base_locale; FILE: client/src/initialState.ts type InstallInterface (line 12) | type InstallInterface = { type InstallData (line 20) | type InstallData = { type EncryptionData (line 46) | type EncryptionData = { type Client (line 80) | type Client = { type AutoClient (line 109) | type AutoClient = { type DashboardData (line 116) | type DashboardData = { type SettingsData (line 145) | type SettingsData = { type RewritesData (line 166) | type RewritesData = { type NormalizedTopClients (line 188) | type NormalizedTopClients = { type StatsData (line 193) | type StatsData = { type ClientsData (line 225) | type ClientsData = { type AccessData (line 235) | type AccessData = { type DhcpInterface (line 243) | type DhcpInterface = { type DhcpData (line 253) | type DhcpData = { type DnsConfigData (line 306) | type DnsConfigData = { type FilteringData (line 339) | type FilteringData = { type QueryLogsData (line 360) | type QueryLogsData = { type ServicesData (line 379) | type ServicesData = { type RootState (line 388) | type RootState = { type InstallState (line 406) | type InstallState = { type LoginState (line 411) | type LoginState = { FILE: client/src/install/Setup/AddressList.tsx type renderItemProps (line 7) | interface renderItemProps { type AddressListProps (line 30) | interface AddressListProps { FILE: client/src/install/Setup/Auth.tsx type AuthFormValues (line 8) | type AuthFormValues = { type Props (line 14) | type Props = { FILE: client/src/install/Setup/Controls.tsx type ControlsProps (line 7) | interface ControlsProps { class Controls (line 28) | class Controls extends Component { method renderPrevButton (line 29) | renderPrevButton(step: any) { method renderNextButton (line 47) | renderNextButton(step: any) { method render (line 97) | render() { FILE: client/src/install/Setup/Devices.tsx type Props (line 13) | type Props = { FILE: client/src/install/Setup/Progress.tsx type Props (line 8) | type Props = { FILE: client/src/install/Setup/Settings.tsx type WebConfig (line 34) | type WebConfig = { type DnsConfig (line 39) | type DnsConfig = { type SettingsFormValues (line 44) | type SettingsFormValues = { type StaticIpType (line 49) | type StaticIpType = { type ConfigType (line 54) | type ConfigType = { type Props (line 70) | type Props = { FILE: client/src/install/Setup/Submit.tsx type Props (line 8) | type Props = { FILE: client/src/login/Login/Form.tsx type LoginFormValues (line 7) | type LoginFormValues = { type LoginFormProps (line 12) | type LoginFormProps = { FILE: client/src/reducers/dnsConfig.ts constant DEFAULT_BLOCKING_IPV4 (line 6) | const DEFAULT_BLOCKING_IPV4 = ALL_INTERFACES_IP; constant DEFAULT_BLOCKING_IPV6 (line 7) | const DEFAULT_BLOCKING_IPV6 = '::'; FILE: client/src/types.d.ts type Window (line 2) | interface Window { FILE: client/tests/constants.ts constant ADMIN_USERNAME (line 1) | const ADMIN_USERNAME = 'admin'; constant ADMIN_PASSWORD (line 2) | const ADMIN_PASSWORD = 'superpassword'; constant PORT (line 3) | const PORT = 3000; constant CONFIG_FILE_PATH (line 4) | const CONFIG_FILE_PATH = '/tmp/AdGuard.e2e.yaml'; FILE: client/tests/e2e/dhcp.spec.ts constant INTERFACE_NAME (line 6) | const INTERFACE_NAME = dhcpConfig.interfaceName; constant RANGE_START (line 7) | const RANGE_START = dhcpConfig.rangeStart; constant RANGE_END (line 8) | const RANGE_END = dhcpConfig.rangeEnd; constant SUBNET_MASK (line 9) | const SUBNET_MASK = dhcpConfig.subnetMask; constant LEASE_TIME (line 10) | const LEASE_TIME = '86400'; FILE: client/tests/e2e/globalSetup.ts constant BASE_URL (line 5) | const BASE_URL = `http://127.0.0.1:${PORT}`; function checkServerAvailable (line 7) | async function checkServerAvailable(): Promise { function globalSetup (line 16) | async function globalSetup(config: FullConfig) { FILE: client/tests/e2e/globalTeardown.ts function globalTeardown (line 4) | async function globalTeardown() { FILE: client/tests/e2e/rewrites.spec.ts constant EXAMPLE_DOMAIN (line 4) | const EXAMPLE_DOMAIN = `example.org`; constant EXAMPLE_UPDATED_DOMAIN (line 5) | const EXAMPLE_UPDATED_DOMAIN = `updated.org`; constant EXAMPLE_ANSWER (line 6) | const EXAMPLE_ANSWER = '192.168.1.1'; FILE: client/tests/helpers/network.ts type DHCPConfig (line 4) | interface DHCPConfig { constant DEFAULT_SUBNET_MASK (line 11) | const DEFAULT_SUBNET_MASK = '255.255.255.0'; constant DEFAULT_SUBNET_MASK_OCTETS (line 12) | const DEFAULT_SUBNET_MASK_OCTETS = DEFAULT_SUBNET_MASK.split('.').map(Nu... function checkIsIPv4 (line 14) | function checkIsIPv4(addr: NetworkInterfaceInfo): boolean { function calculateNetwork (line 18) | function calculateNetwork(ip: number[], mask: number[]): number[] { function calculateBroadcast (line 24) | function calculateBroadcast(network: number[], mask: number[]): number[] { function getDHCPConfig (line 30) | function getDHCPConfig(): DHCPConfig { FILE: client/webpack.common.js constant RESOURCES_PATH (line 12) | const RESOURCES_PATH = path.resolve(__dirname); constant ENTRY_REACT (line 13) | const ENTRY_REACT = path.resolve(RESOURCES_PATH, 'src/index.tsx'); constant ENTRY_INSTALL (line 14) | const ENTRY_INSTALL = path.resolve(RESOURCES_PATH, 'src/install/index.ts... constant ENTRY_LOGIN (line 15) | const ENTRY_LOGIN = path.resolve(RESOURCES_PATH, 'src/login/index.tsx'); constant HTML_PATH (line 16) | const HTML_PATH = path.resolve(RESOURCES_PATH, 'public/index.html'); constant HTML_INSTALL_PATH (line 17) | const HTML_INSTALL_PATH = path.resolve(RESOURCES_PATH, 'public/install.h... constant HTML_LOGIN_PATH (line 18) | const HTML_LOGIN_PATH = path.resolve(RESOURCES_PATH, 'public/login.html'); constant ASSETS_PATH (line 19) | const ASSETS_PATH = path.resolve(RESOURCES_PATH, 'public/assets'); constant PUBLIC_PATH (line 21) | const PUBLIC_PATH = path.resolve(__dirname, '../build/static'); constant PUBLIC_ASSETS_PATH (line 22) | const PUBLIC_ASSETS_PATH = path.resolve(PUBLIC_PATH, 'assets'); constant BUILD_ENV (line 24) | const BUILD_ENV = BUILD_ENVS[process.env.BUILD_ENV]; FILE: client/webpack.dev.js constant ZERO_HOST (line 7) | const ZERO_HOST = '0.0.0.0'; constant LOCALHOST (line 8) | const LOCALHOST = '127.0.0.1'; constant DEFAULT_PORT (line 9) | const DEFAULT_PORT = 80; FILE: internal/agh/agh.go constant DefaultOutputLimit (line 16) | DefaultOutputLimit = 512 type ConfigModifier (line 19) | type ConfigModifier interface type EmptyConfigModifier (line 26) | type EmptyConfigModifier struct method Apply (line 32) | func (em EmptyConfigModifier) Apply(ctx context.Context) {} type exitErr (line 38) | type exitErr struct method Error (line 51) | func (e exitErr) Error() (s string) { method ExitCode (line 56) | func (e exitErr) ExitCode() (code osutil.ExitCode) { function newExitErr (line 43) | func newExitErr(code osutil.ExitCode) (err exitErr) { type ExternalCommand (line 61) | type ExternalCommand struct function keyCommand (line 76) | func keyCommand(path string, args []string) (k string) { function parseCommand (line 85) | func parseCommand(s string) (path string, args []string) { function NewMultipleCommandConstructor (line 100) | func NewMultipleCommandConstructor(cmds ...ExternalCommand) (cs executil... function NewCommandConstructor (line 139) | func NewCommandConstructor( FILE: internal/aghalg/aghalg.go function CoalesceSlice (line 15) | func CoalesceSlice[E any, S []E](values ...S) (res S) { type UniqChecker (line 29) | type UniqChecker method Add (line 32) | func (uc UniqChecker[T]) Add(elems ...T) { method Merge (line 39) | func (uc UniqChecker[T]) Merge(other UniqChecker[T]) (merged UniqChecker... method Validate (line 53) | func (uc UniqChecker[T]) Validate() (err error) { FILE: internal/aghalg/nullbool.go type NullBool (line 13) | type NullBool method String (line 23) | func (nb NullBool) String() (s string) { method MarshalJSON (line 45) | func (nb NullBool) MarshalJSON() (b []byte, err error) { method UnmarshalJSON (line 53) | func (nb *NullBool) UnmarshalJSON(b []byte) (err error) { constant NBNull (line 17) | NBNull NullBool = iota constant NBTrue (line 18) | NBTrue constant NBFalse (line 19) | NBFalse function BoolToNullBool (line 37) | func BoolToNullBool(cond bool) (nb NullBool) { FILE: internal/aghalg/nullbool_test.go function TestNullBool_MarshalJSON (line 13) | func TestNullBool_MarshalJSON(t *testing.T) { function TestNullBool_UnmarshalJSON (line 59) | func TestNullBool_UnmarshalJSON(t *testing.T) { FILE: internal/aghalg/sortedmap.go type SortedMap (line 10) | type SortedMap struct function NewSortedMap (line 17) | func NewSortedMap[K cmp.Ordered, V any]() (m *SortedMap[K, V]) { function NewSortedMapFunc (line 23) | func NewSortedMapFunc[K comparable, V any](cmpFunc func(a, b K) (res int... method Set (line 31) | func (m *SortedMap[K, V]) Set(key K, val V) { method Get (line 43) | func (m *SortedMap[K, V]) Get(key K) (val V, ok bool) { method Del (line 56) | func (m *SortedMap[K, V]) Del(key K) { method Clear (line 71) | func (m *SortedMap[K, V]) Clear() { method Range (line 82) | func (m *SortedMap[K, V]) Range(cb func(K, V) (cont bool)) { FILE: internal/aghalg/sortedmap_test.go function TestNewSortedMap (line 10) | func TestNewSortedMap(t *testing.T) { function TestNewSortedMap_nil (line 65) | func TestNewSortedMap_nil(t *testing.T) { FILE: internal/aghhttp/aghhttp.go type RegisterFunc (line 20) | type RegisterFunc function OK (line 23) | func OK(ctx context.Context, l *slog.Logger, w http.ResponseWriter) { function ErrorAndLog (line 31) | func ErrorAndLog( function UserAgent (line 57) | func UserAgent() (ua string) { constant textPlainDeprMsg (line 63) | textPlainDeprMsg = `using this api with the text/plain content-type is d... function WriteTextPlainDeprecated (line 69) | func WriteTextPlainDeprecated( FILE: internal/aghhttp/header.go constant HdrValApplicationJSON (line 7) | HdrValApplicationJSON = "application/json" constant HdrValStrictTransportSecurity (line 8) | HdrValStrictTransportSecurity = "max-age=31536000; includeSubDomains" constant HdrValTextPlain (line 9) | HdrValTextPlain = "text/plain" FILE: internal/aghhttp/json.go constant nsecPerMsec (line 19) | nsecPerMsec = float64(time.Millisecond / time.Nanosecond) type JSONDuration (line 23) | type JSONDuration method MarshalJSON (line 30) | func (d JSONDuration) MarshalJSON() (b []byte, err error) { method UnmarshalJSON (line 41) | func (d *JSONDuration) UnmarshalJSON(b []byte) (err error) { type JSONTime (line 58) | type JSONTime method MarshalJSON (line 65) | func (t JSONTime) MarshalJSON() (b []byte, err error) { method UnmarshalJSON (line 76) | func (t *JSONTime) UnmarshalJSON(b []byte) (err error) { function WriteJSONResponse (line 94) | func WriteJSONResponse( function WriteJSONResponseOK (line 123) | func WriteJSONResponseOK( type ErrorCode (line 135) | type ErrorCode constant ErrorCodeTMP000 (line 142) | ErrorCodeTMP000 = "" type HTTPAPIErrorResp (line 148) | type HTTPAPIErrorResp struct function WriteJSONResponseError (line 156) | func WriteJSONResponseError( FILE: internal/aghhttp/json_test.go constant testJSONTimeStr (line 18) | testJSONTimeStr = "1234567890123.456" function TestJSONTime_MarshalJSON (line 20) | func TestJSONTime_MarshalJSON(t *testing.T) { function TestJSONTime_UnmarshalJSON (line 66) | func TestJSONTime_UnmarshalJSON(t *testing.T) { FILE: internal/aghhttp/registrar.go type Registrar (line 10) | type Registrar interface type EmptyRegistrar (line 15) | type EmptyRegistrar struct method Register (line 21) | func (EmptyRegistrar) Register(_, _ string, _ http.HandlerFunc) {} type WrapFunc (line 24) | type WrapFunc type DefaultRegistrar (line 28) | type DefaultRegistrar struct method Register (line 46) | func (r *DefaultRegistrar) Register(method, path string, h http.Handle... function NewDefaultRegistrar (line 35) | func NewDefaultRegistrar(mux *http.ServeMux, wrap WrapFunc) (r *DefaultR... FILE: internal/aghnet/addr.go function NormalizeDomain (line 12) | func NormalizeDomain(host string) (norm string) { FILE: internal/aghnet/dhcp.go function CheckOtherDHCP (line 10) | func CheckOtherDHCP( FILE: internal/aghnet/dhcp_unix.go constant defaultDiscoverTime (line 26) | defaultDiscoverTime = 3 * time.Second function checkOtherDHCP (line 28) | func checkOtherDHCP( function ifaceIPv4Subnet (line 49) | func ifaceIPv4Subnet(iface *net.Interface) (subnet netip.Prefix, err err... function checkOtherDHCPv4 (line 80) | func checkOtherDHCPv4( function discover4 (line 107) | func discover4( function tryConn4 (line 162) | func tryConn4( function checkOtherDHCPv6 (line 220) | func checkOtherDHCPv6( function discover6 (line 256) | func discover6( function tryConn6 (line 299) | func tryConn6( FILE: internal/aghnet/dhcp_windows.go function checkOtherDHCP (line 12) | func checkOtherDHCP( FILE: internal/aghnet/hostgen.go function GenerateHostname (line 18) | func GenerateHostname(ip netip.Addr) (hostname string) { FILE: internal/aghnet/hostgen_test.go function TestGenerateHostName (line 11) | func TestGenerateHostName(t *testing.T) { FILE: internal/aghnet/hostscontainer.go constant hostsContainerPrefix (line 22) | hostsContainerPrefix = "hosts container" type HostsContainer (line 26) | type HostsContainer struct method Close (line 128) | func (hc *HostsContainer) Close() (err error) { method Upd (line 143) | func (hc *HostsContainer) Upd() (updates <-chan *hostsfile.DefaultStor... method ByAddr (line 151) | func (hc *HostsContainer) ByAddr(addr netip.Addr) (names []string) { method ByName (line 156) | func (hc *HostsContainer) ByName(name string) (addrs []netip.Addr) { method handleEvents (line 187) | func (hc *HostsContainer) handleEvents(ctx context.Context) { method sendUpd (line 213) | func (hc *HostsContainer) sendUpd(ctx context.Context, recs *hostsfile... method refresh (line 234) | func (hc *HostsContainer) refresh(ctx context.Context) (err error) { constant ErrNoHostsPaths (line 54) | ErrNoHostsPaths errors.Error = "no valid paths to hosts files provided" function NewHostsContainer (line 64) | func NewHostsContainer( function pathsToPatterns (line 161) | func pathsToPatterns(fsys fs.FS, paths []string) (patterns []string, err... FILE: internal/aghnet/hostscontainer_internal_test.go constant nl (line 16) | nl = "\n" function TestHostsContainer_PathsToPatterns (line 18) | func TestHostsContainer_PathsToPatterns(t *testing.T) { FILE: internal/aghnet/hostscontainer_test.go function TestNewHostsContainer (line 24) | func TestNewHostsContainer(t *testing.T) { function TestHostsContainer_refresh (line 137) | func TestHostsContainer_refresh(t *testing.T) { FILE: internal/aghnet/ignore.go type IgnoreEngine (line 15) | type IgnoreEngine struct method Has (line 50) | func (e *IgnoreEngine) Has(host string) (ignore bool) { method Values (line 61) | func (e *IgnoreEngine) Values() (ignored []string) { method IsEnabled (line 66) | func (e *IgnoreEngine) IsEnabled() (enabled bool) { function NewIgnoreEngine (line 30) | func NewIgnoreEngine(ignored []string, enabled bool) (e *IgnoreEngine, e... FILE: internal/aghnet/ignore_test.go function TestIgnoreEngine_Has (line 10) | func TestIgnoreEngine_Has(t *testing.T) { FILE: internal/aghnet/interfaces.go constant IPVersion4 (line 17) | IPVersion4 IPVersion = 4 constant IPVersion6 (line 18) | IPVersion6 IPVersion = 6 type NetIface (line 22) | type NetIface interface function IfaceIPAddrs (line 27) | func IfaceIPAddrs(iface NetIface, ipv IPVersion) (ips []net.IP, err erro... function ipFromAddr (line 50) | func ipFromAddr(addr net.Addr, ipv IPVersion) (ip net.IP) { function IfaceDNSIPAddrs (line 81) | func IfaceDNSIPAddrs( type interfaceName (line 134) | type interfaceName FILE: internal/aghnet/interfaces_bsd.go function reuseAddrCtrl (line 17) | func reuseAddrCtrl(_, _ string, c syscall.RawConn) (err error) { function listenPacketReusable (line 33) | func listenPacketReusable(_, network, address string) (c net.PacketConn,... FILE: internal/aghnet/interfaces_linux.go function listenPacketReusable (line 14) | func listenPacketReusable(ifaceName, network, address string) (c net.Pac... FILE: internal/aghnet/interfaces_test.go type fakeIface (line 16) | type fakeIface struct method Addrs (line 22) | func (iface *fakeIface) Addrs() (addrs []net.Addr, err error) { function TestIfaceIPAddrs (line 33) | func TestIfaceIPAddrs(t *testing.T) { type waitingFakeIface (line 120) | type waitingFakeIface struct method Addrs (line 130) | func (iface *waitingFakeIface) Addrs() (addrs []net.Addr, err error) { function TestIfaceDNSIPAddrs (line 144) | func TestIfaceDNSIPAddrs(t *testing.T) { FILE: internal/aghnet/ipmut.go type IPMutFunc (line 10) | type IPMutFunc function nopIPMutFunc (line 13) | func nopIPMutFunc(net.IP) {} type IPMut (line 16) | type IPMut struct method Store (line 33) | func (m *IPMut) Store(f IPMutFunc) { method Load (line 41) | func (m *IPMut) Load() (f IPMutFunc) { function NewIPMut (line 22) | func NewIPMut(f IPMutFunc) (m *IPMut) { FILE: internal/aghnet/ipmut_test.go function TestIPMut (line 12) | func TestIPMut(t *testing.T) { FILE: internal/aghnet/net.go constant ErrNoStaticIPInfo (line 40) | ErrNoStaticIPInfo errors.Error = "no information about static ip" function IfaceHasStaticIP (line 45) | func IfaceHasStaticIP( function IfaceSetStaticIP (line 55) | func IfaceSetStaticIP( function GatewayIP (line 69) | func GatewayIP( function CanBindPrivilegedPorts (line 109) | func CanBindPrivilegedPorts(ctx context.Context, l *slog.Logger) (can bo... type NetInterface (line 114) | type NetInterface struct method MarshalJSON (line 126) | func (iface NetInterface) MarshalJSON() ([]byte, error) { function NetInterfaceFrom (line 142) | func NetInterfaceFrom(iface *net.Interface) (niface *NetInterface, err e... function populateAddrs (line 166) | func populateAddrs(addr net.Addr, niface *NetInterface) (err error) { function ipNetFromAddr (line 198) | func ipNetFromAddr(addr net.Addr) (ip *net.IPNet, err error) { function isLinkLocalV4 (line 214) | func isLinkLocalV4(ip netip.Addr) (ok bool) { function GetValidNetInterfacesForWeb (line 223) | func GetValidNetInterfacesForWeb() (nifaces []*NetInterface, err error) { function InterfaceByIP (line 251) | func InterfaceByIP(ip netip.Addr) (ifaceName string) { function GetSubnet (line 272) | func GetSubnet(ctx context.Context, l *slog.Logger, ifaceName string) (p... function CheckPort (line 291) | func CheckPort(network string, ipp netip.AddrPort) (err error) { function IsAddrInUse (line 311) | func IsAddrInUse(err error) (ok bool) { function CollectAllIfacesAddrs (line 322) | func CollectAllIfacesAddrs() (addrs []netip.Addr, err error) { function ParseAddrPort (line 346) | func ParseAddrPort(s string, defaultPort uint16) (ipp netip.AddrPort, er... function ParseSubnet (line 369) | func ParseSubnet(s string) (p netip.Prefix, err error) { function ParseBootstraps (line 391) | func ParseBootstraps( function BroadcastFromPref (line 410) | func BroadcastFromPref(p netip.Prefix) (bc netip.Addr) { FILE: internal/aghnet/net_bsd.go function canBindPrivilegedPorts (line 12) | func canBindPrivilegedPorts(_ context.Context, _ *slog.Logger) (can bool... FILE: internal/aghnet/net_darwin.go type hardwarePortInfo (line 21) | type hardwarePortInfo struct function ifaceHasStaticIP (line 31) | func ifaceHasStaticIP( function getCurrentHardwarePortInfo (line 46) | func getCurrentHardwarePortInfo( function getNetworkSetupHardwareReports (line 71) | func getNetworkSetupHardwareReports( function getHardwarePortInfo (line 96) | func getHardwarePortInfo( function ifaceSetStaticIP (line 121) | func ifaceSetStaticIP( function getEtcResolvConfServers (line 177) | func getEtcResolvConfServers() (addrs []string, err error) { FILE: internal/aghnet/net_darwin_internal_test.go function TestIfaceHasStaticIP (line 18) | func TestIfaceHasStaticIP(t *testing.T) { function TestIfaceSetStaticIP (line 114) | func TestIfaceSetStaticIP(t *testing.T) { FILE: internal/aghnet/net_freebsd.go function ifaceHasStaticIP (line 18) | func ifaceHasStaticIP( method rcConfStaticConfig (line 32) | func (n interfaceName) rcConfStaticConfig(r io.Reader) (_ []string, cont... function ifaceSetStaticIP (line 62) | func ifaceSetStaticIP( FILE: internal/aghnet/net_freebsd_internal_test.go function TestIfaceHasStaticIP (line 15) | func TestIfaceHasStaticIP(t *testing.T) { FILE: internal/aghnet/net_internal_test.go constant testTimeout (line 23) | testTimeout = 1 * time.Second function substRootDirFS (line 33) | func substRootDirFS(tb testing.TB, fsys fs.FS) { type RunCmdFunc (line 42) | type RunCmdFunc type ifaceAddrsFunc (line 45) | type ifaceAddrsFunc function substNetInterfaceAddrs (line 49) | func substNetInterfaceAddrs(tb testing.TB, f ifaceAddrsFunc) { function TestGatewayIP (line 57) | func TestGatewayIP(t *testing.T) { function TestInterfaceByIP (line 99) | func TestInterfaceByIP(t *testing.T) { function TestBroadcastFromIPNet (line 116) | func TestBroadcastFromIPNet(t *testing.T) { function TestCheckPort (line 159) | func TestCheckPort(t *testing.T) { function TestCollectAllIfacesAddrs (line 205) | func TestCollectAllIfacesAddrs(t *testing.T) { function TestIsAddrInUse (line 260) | func TestIsAddrInUse(t *testing.T) { function TestNetInterface_MarshalJSON (line 277) | func TestNetInterface_MarshalJSON(t *testing.T) { FILE: internal/aghnet/net_linux.go constant dhcpcdConf (line 25) | dhcpcdConf = "etc/dhcpcd.conf" function canBindPrivilegedPorts (line 27) | func canBindPrivilegedPorts(ctx context.Context, l *slog.Logger) (can bo... method dhcpcdStaticConfig (line 57) | func (n interfaceName) dhcpcdStaticConfig(r io.Reader) (subsources []str... method ifacesStaticConfig (line 83) | func (n interfaceName) ifacesStaticConfig(r io.Reader) (sub []string, co... function ifaceHasStaticIP (line 114) | func ifaceHasStaticIP( function findIfaceLine (line 149) | func findIfaceLine(s *bufio.Scanner, name string) (ok bool) { function ifaceSetStaticIP (line 163) | func ifaceSetStaticIP( function dhcpcdConfIface (line 193) | func dhcpcdConfIface(ifaceName string, subnet netip.Prefix, gateway neti... FILE: internal/aghnet/net_linux_internal_test.go function TestHasStaticIP (line 14) | func TestHasStaticIP(t *testing.T) { FILE: internal/aghnet/net_openbsd.go function ifaceHasStaticIP (line 18) | func ifaceHasStaticIP( function hostnameIfStaticConfig (line 30) | func hostnameIfStaticConfig(r io.Reader) (_ []string, ok bool, err error) { function ifaceSetStaticIP (line 49) | func ifaceSetStaticIP( FILE: internal/aghnet/net_openbsd_internal_test.go function TestIfaceHasStaticIP (line 16) | func TestIfaceHasStaticIP(t *testing.T) { FILE: internal/aghnet/net_test.go constant testTimeout (line 18) | testTimeout = 1 * time.Second function TestMain (line 23) | func TestMain(m *testing.M) { function TestParseAddrPort (line 27) | func TestParseAddrPort(t *testing.T) { FILE: internal/aghnet/net_unix.go function closePortChecker (line 13) | func closePortChecker(c io.Closer) (err error) { function isAddrInUse (line 17) | func isAddrInUse(err syscall.Errno) (ok bool) { FILE: internal/aghnet/net_windows.go function canBindPrivilegedPorts (line 18) | func canBindPrivilegedPorts(_ context.Context, _ *slog.Logger) (can bool... function ifaceHasStaticIP (line 22) | func ifaceHasStaticIP( function ifaceSetStaticIP (line 30) | func ifaceSetStaticIP( function closePortChecker (line 40) | func closePortChecker(c io.Closer) (err error) { function isAddrInUse (line 55) | func isAddrInUse(err syscall.Errno) (ok bool) { FILE: internal/aghnet/upstream.go function UpstreamHTTPVersions (line 7) | func UpstreamHTTPVersions(http3 bool) (v []upstream.HTTPVersion) { function IsCommentOrEmpty (line 22) | func IsCommentOrEmpty(s string) (ok bool) { FILE: internal/aghnet/upstream_test.go function TestIsCommentOrEmpty (line 10) | func TestIsCommentOrEmpty(t *testing.T) { FILE: internal/aghos/filewalker.go type FileWalker (line 22) | type FileWalker method Walk (line 87) | func (fw FileWalker) Walk(fsys fs.FS, initial ...string) (ok bool, err... function checkFile (line 26) | func checkFile( function handlePatterns (line 57) | func handlePatterns( FILE: internal/aghos/filewalker_internal_test.go type errFS (line 16) | type errFS struct method Open (line 23) | func (efs *errFS) Open(name string) (fsys fs.File, err error) { constant errFSOpen (line 19) | errFSOpen errors.Error = "test open error" function TestWalkerFunc_CheckFile (line 27) | func TestWalkerFunc_CheckFile(t *testing.T) { FILE: internal/aghos/filewalker_test.go constant attribute (line 18) | attribute = "000" constant nl (line 19) | nl = "\n" function newFileWalker (line 24) | func newFileWalker() (fw aghos.FileWalker) { function TestFileWalker_Walk (line 42) | func TestFileWalker_Walk(t *testing.T) { FILE: internal/aghos/fswatcher.go type FSWatcher (line 25) | type FSWatcher interface type OSWatcherConfig (line 44) | type OSWatcherConfig struct type OSWatcher (line 53) | type OSWatcher struct method Start (line 98) | func (w *OSWatcher) Start(ctx context.Context) (err error) { method Shutdown (line 106) | func (w *OSWatcher) Shutdown(_ context.Context) (err error) { method Events (line 111) | func (w *OSWatcher) Events() (e <-chan Event) { method Add (line 119) | func (w *OSWatcher) Add(name string) (err error) { method Remove (line 157) | func (w *OSWatcher) Remove(name string) (err error) { method handleEvents (line 196) | func (w *OSWatcher) handleEvents(ctx context.Context) { method isTrackedEvent (line 220) | func (w *OSWatcher) isTrackedEvent(e fsnotify.Event) (isDir bool) { method handleErrors (line 258) | func (w *OSWatcher) handleErrors(ctx context.Context) { constant osWatcherPref (line 73) | osWatcherPref = "os_watcher" function NewOSWatcher (line 77) | func NewOSWatcher(c *OSWatcherConfig) (w *OSWatcher, err error) { function skipDuplicates (line 245) | func skipDuplicates(ch <-chan fsnotify.Event) { type EmptyFSWatcher (line 268) | type EmptyFSWatcher struct method Start (line 275) | func (EmptyFSWatcher) Start(_ context.Context) (err error) { method Shutdown (line 281) | func (EmptyFSWatcher) Shutdown(_ context.Context) (err error) { method Events (line 287) | func (EmptyFSWatcher) Events() (e <-chan Event) { method Add (line 293) | func (EmptyFSWatcher) Add(_ string) (err error) { method Remove (line 299) | func (EmptyFSWatcher) Remove(_ string) (err error) { FILE: internal/aghos/os.go constant DefaultPermDir (line 29) | DefaultPermDir fs.FileMode = 0o700 constant DefaultPermExe (line 30) | DefaultPermExe fs.FileMode = 0o700 constant DefaultPermFile (line 31) | DefaultPermFile fs.FileMode = 0o600 function Unsupported (line 35) | func Unsupported(op string) (err error) { function SetRlimit (line 42) | func SetRlimit(val uint64) (err error) { function HaveAdminRights (line 47) | func HaveAdminRights() (bool, error) { constant MaxCmdOutputSize (line 53) | MaxCmdOutputSize = 64 * 1024 function RunCommand (line 59) | func RunCommand( function PIDByCommand (line 106) | func PIDByCommand( function parsePSOutput (line 169) | func parsePSOutput(r io.Reader, cmdName string, ignore []int) (largest, ... function IsOpenWrt (line 193) | func IsOpenWrt() (ok bool) { function SendShutdownSignal (line 198) | func SendShutdownSignal(c chan<- os.Signal) { function RootDir (line 205) | func RootDir() (dir string) { FILE: internal/aghos/os_bsd.go function setRlimit (line 10) | func setRlimit(val uint64) (err error) { function haveAdminRights (line 18) | func haveAdminRights() (bool, error) { function isOpenWrt (line 22) | func isOpenWrt() (ok bool) { FILE: internal/aghos/os_freebsd.go function setRlimit (line 10) | func setRlimit(val uint64) (err error) { function haveAdminRights (line 18) | func haveAdminRights() (bool, error) { function isOpenWrt (line 22) | func isOpenWrt() (ok bool) { FILE: internal/aghos/os_internal_test.go function TestLargestLabeled (line 12) | func TestLargestLabeled(t *testing.T) { FILE: internal/aghos/os_linux.go function setRlimit (line 14) | func setRlimit(val uint64) (err error) { function haveAdminRights (line 22) | func haveAdminRights() (bool, error) { function isOpenWrt (line 28) | func isOpenWrt() (ok bool) { FILE: internal/aghos/os_unix.go function sendShutdownSignal (line 9) | func sendShutdownSignal(_ chan<- os.Signal) { function rootDir (line 13) | func rootDir() (dir string) { FILE: internal/aghos/os_windows.go function setRlimit (line 12) | func setRlimit(_ uint64) (err error) { function haveAdminRights (line 16) | func haveAdminRights() (bool, error) { function isOpenWrt (line 37) | func isOpenWrt() (ok bool) { function sendShutdownSignal (line 41) | func sendShutdownSignal(c chan<- os.Signal) { function rootDir (line 45) | func rootDir() (dir string) { FILE: internal/aghos/service.go function PreCheckActionStart (line 4) | func PreCheckActionStart() (err error) { FILE: internal/aghos/service_darwin.go function preCheckActionStart (line 16) | func preCheckActionStart() (err error) { FILE: internal/aghos/service_others.go function preCheckActionStart (line 6) | func preCheckActionStart() (err error) { FILE: internal/aghos/syslog.go function ConfigureSyslog (line 4) | func ConfigureSyslog(serviceName string) (err error) { FILE: internal/aghos/syslog_others.go function configureSyslog (line 12) | func configureSyslog(serviceName string) (err error) { FILE: internal/aghos/syslog_windows.go type eventLogWriter (line 13) | type eventLogWriter struct method Write (line 18) | func (w *eventLogWriter) Write(b []byte) (int, error) { function configureSyslog (line 23) | func configureSyslog(serviceName string) (err error) { FILE: internal/aghos/user.go function SetGroup (line 4) | func SetGroup(groupName string) (err error) { function SetUser (line 9) | func SetUser(userName string) (err error) { FILE: internal/aghos/user_unix.go function setGroup (line 12) | func setGroup(groupName string) (err error) { function setUser (line 31) | func setUser(userName string) (err error) { FILE: internal/aghos/user_windows.go function setGroup (line 8) | func setGroup(_ string) (err error) { function setUser (line 12) | func setUser(_ string) (err error) { FILE: internal/aghrenameio/renameio.go type PendingFile (line 20) | type PendingFile interface function NewPendingFile (line 39) | func NewPendingFile(filePath string, mode fs.FileMode) (f PendingFile, e... function WithDeferredCleanup (line 45) | func WithDeferredCleanup(returned error, file PendingFile) (err error) { FILE: internal/aghrenameio/renameio_test.go constant testPerm (line 17) | testPerm fs.FileMode = 0o644 function TestPendingFile (line 25) | func TestPendingFile(t *testing.T) { function newInitialFile (line 46) | func newInitialFile(tb testing.TB) (targetPath string) { function TestWithDeferredCleanup (line 58) | func TestWithDeferredCleanup(t *testing.T) { FILE: internal/aghrenameio/renameio_unix.go type pendingFile (line 13) | type pendingFile struct method Cleanup (line 21) | func (f pendingFile) Cleanup() (err error) { method CloseReplace (line 26) | func (f pendingFile) CloseReplace() (err error) { method Write (line 31) | func (f pendingFile) Write(b []byte) (n int, err error) { function newPendingFile (line 38) | func newPendingFile(filePath string, mode fs.FileMode) (f PendingFile, e... FILE: internal/aghrenameio/renameio_windows.go type pendingFile (line 16) | type pendingFile struct method Cleanup (line 25) | func (f *pendingFile) Cleanup() (err error) { method CloseReplace (line 35) | func (f *pendingFile) CloseReplace() (err error) { method Write (line 50) | func (f *pendingFile) Write(b []byte) (n int, err error) { function newPendingFile (line 57) | func newPendingFile(filePath string, mode fs.FileMode) (f PendingFile, e... FILE: internal/aghslog/aghslog.go constant PrefixDNSProxy (line 11) | PrefixDNSProxy = "dnsproxy" constant KeyClientName (line 15) | KeyClientName = "client_name" constant KeyUpstreamType (line 19) | KeyUpstreamType = "upstream_type" constant UpstreamTypeBootstrap (line 24) | UpstreamTypeBootstrap = "bootstrap" constant UpstreamTypeCustom (line 27) | UpstreamTypeCustom = "custom" constant UpstreamTypeFallback (line 30) | UpstreamTypeFallback = "fallback" constant UpstreamTypeMain (line 33) | UpstreamTypeMain = "main" constant UpstreamTypeLocal (line 37) | UpstreamTypeLocal = "local" constant UpstreamTypeService (line 41) | UpstreamTypeService = "service" constant UpstreamTypeTest (line 45) | UpstreamTypeTest = "test" function NewForUpstream (line 50) | func NewForUpstream(baseLogger *slog.Logger, typ string) (l *slog.Logger) { FILE: internal/aghtest/aghtest.go constant ReqHost (line 22) | ReqHost = "www.host.example" constant ReqFQDN (line 25) | ReqFQDN = ReqHost + "." function HostToIPs (line 29) | func HostToIPs(host string) (ipv4, ipv6 netip.Addr) { function StartHTTPServer (line 37) | func StartHTTPServer(tb testing.TB, data []byte) (c *http.Client, u *url... constant testTimeout (line 54) | testTimeout = 1 * time.Second function StartLocalhostUpstream (line 58) | func StartLocalhostUpstream(tb testing.TB, h dns.Handler) (addr *url.URL) { FILE: internal/aghtest/interface.go type FSWatcher (line 21) | type FSWatcher struct method Start (line 44) | func (w *FSWatcher) Start(ctx context.Context) (err error) { method Shutdown (line 49) | func (w *FSWatcher) Shutdown(ctx context.Context) (err error) { method Events (line 54) | func (w *FSWatcher) Events() (e <-chan aghos.Event) { method Add (line 59) | func (w *FSWatcher) Add(name string) (err error) { method Remove (line 64) | func (w *FSWatcher) Remove(name string) (err error) { function NewFSWatcher (line 30) | func NewFSWatcher() (w *FSWatcher) { type ServiceWithConfig (line 70) | type ServiceWithConfig struct method Start (line 81) | func (s *ServiceWithConfig[_]) Start(ctx context.Context) (err error) { method Shutdown (line 87) | func (s *ServiceWithConfig[_]) Shutdown(ctx context.Context) (err error) { method Config (line 93) | func (s *ServiceWithConfig[ConfigType]) Config() (c ConfigType) { type AddressProcessor (line 99) | type AddressProcessor struct method Process (line 106) | func (p *AddressProcessor) Process(ctx context.Context, ip netip.Addr) { method Close (line 112) | func (p *AddressProcessor) Close() (err error) { type AddressUpdater (line 117) | type AddressUpdater struct method UpdateAddress (line 123) | func (p *AddressUpdater) UpdateAddress( type Exchanger (line 133) | type Exchanger struct method Exchange (line 141) | func (e *Exchanger) Exchange( type UpstreamMock (line 152) | type UpstreamMock struct method Address (line 162) | func (u *UpstreamMock) Address() (addr string) { method Exchange (line 167) | func (u *UpstreamMock) Exchange(req *dns.Msg) (resp *dns.Msg, err erro... method Close (line 172) | func (u *UpstreamMock) Close() (err error) { type ConfigModifier (line 177) | type ConfigModifier struct method Apply (line 185) | func (m *ConfigModifier) Apply(ctx context.Context) { type Registrar (line 190) | type Registrar struct method Register (line 198) | func (m *Registrar) Register(method, path string, h http.HandlerFunc) { FILE: internal/aghtest/upstream.go type Upstream (line 21) | type Upstream struct method Exchange (line 35) | func (u *Upstream) Exchange(m *dns.Msg) (resp *dns.Msg, err error) { method Address (line 75) | func (u *Upstream) Address() string { method Close (line 80) | func (u *Upstream) Close() (err error) { function MatchedResponse (line 101) | func MatchedResponse(req *dns.Msg, qt uint16, targ, answer string) (resp... function mustAnsA (line 139) | func mustAnsA(respHdr dns.RR_Header, s string) (ans []dns.RR) { function mustAnsAAAA (line 153) | func mustAnsAAAA(respHdr dns.RR_Header, s string) (ans []dns.RR) { function NewUpstreamMock (line 168) | func NewUpstreamMock(onExc func(req *dns.Msg) (resp *dns.Msg, err error)... function NewBlockUpstream (line 180) | func NewBlockUpstream(hostname string, shouldBlock bool) (u *UpstreamMoc... constant ErrUpstream (line 215) | ErrUpstream errors.Error = "test upstream error" function NewErrorUpstream (line 219) | func NewErrorUpstream() (u *UpstreamMock) { FILE: internal/aghtls/aghtls.go function Init (line 20) | func Init(ctx context.Context, l *slog.Logger) { function ParseCiphers (line 35) | func ParseCiphers(cipherNames []string) (cipherIDs []uint16, err error) { function SaferCipherSuites (line 55) | func SaferCipherSuites() (safe []uint16) { function CertificateHasIP (line 81) | func CertificateHasIP(cert *x509.Certificate) (ok bool) { FILE: internal/aghtls/aghtls_test.go constant testTimeout (line 15) | testTimeout time.Duration = 1 * time.Second function TestParseCiphers (line 17) | func TestParseCiphers(t *testing.T) { FILE: internal/aghtls/defaultmanager.go type DefaultManagerConfig (line 15) | type DefaultManagerConfig struct type DefaultManager (line 28) | type DefaultManager struct method Set (line 52) | func (mgr *DefaultManager) Set(ctx context.Context, certKey TLSPair) (... method appendUnwatchErr (line 74) | func (mgr *DefaultManager) appendUnwatchErr(errs []error, what, p stri... method appendWatchErr (line 89) | func (mgr *DefaultManager) appendWatchErr(errs []error, what, p string... method Refresh (line 103) | func (mgr *DefaultManager) Refresh(ctx context.Context) (err error) { method Start (line 117) | func (mgr *DefaultManager) Start(ctx context.Context) (err error) { method Shutdown (line 129) | func (mgr *DefaultManager) Shutdown(ctx context.Context) (err error) { method Updates (line 141) | func (mgr *DefaultManager) Updates(ctx context.Context) (updates <-cha... method handleEvents (line 147) | func (mgr *DefaultManager) handleEvents(ctx context.Context) { function NewDefaultManager (line 37) | func NewDefaultManager(c *DefaultManagerConfig) (mgr *DefaultManager) { FILE: internal/aghtls/manager.go type TLSPair (line 10) | type TLSPair struct type UpdateSignal (line 21) | type UpdateSignal struct type Manager (line 24) | type Manager interface type EmptyManager (line 41) | type EmptyManager struct method Start (line 48) | func (EmptyManager) Start(_ context.Context) (err error) { return nil } method Shutdown (line 52) | func (EmptyManager) Shutdown(_ context.Context) (err error) { return n... method Refresh (line 56) | func (EmptyManager) Refresh(_ context.Context) (err error) { return nil } method Set (line 60) | func (EmptyManager) Set(_ context.Context, _ TLSPair) (err error) { re... method Updates (line 64) | func (EmptyManager) Updates(_ context.Context) (updates <-chan UpdateS... FILE: internal/aghtls/root.go function SystemRootCAs (line 14) | func SystemRootCAs(ctx context.Context, l *slog.Logger) (roots *x509.Cer... FILE: internal/aghtls/root_linux.go function rootCAs (line 16) | func rootCAs(ctx context.Context, l *slog.Logger) (roots *x509.CertPool) { function addCertsFromDir (line 36) | func addCertsFromDir( FILE: internal/aghtls/root_others.go function rootCAs (line 11) | func rootCAs(_ context.Context, _ *slog.Logger) (roots *x509.CertPool) { FILE: internal/aghuser/aghuser.go type Login (line 11) | type Login function NewLogin (line 17) | func NewLogin(s string) (l Login, err error) { type Password (line 27) | type Password interface type DefaultPassword (line 37) | type DefaultPassword struct method Authenticate (line 52) | func (p *DefaultPassword) Authenticate(ctx context.Context, passwd str... method Hash (line 57) | func (p *DefaultPassword) Hash() (b []byte) { function NewDefaultPassword (line 42) | func NewDefaultPassword(hash string) (p *DefaultPassword) { FILE: internal/aghuser/aghuser_test.go constant testTimeout (line 6) | testTimeout = 1 * time.Second FILE: internal/aghuser/db.go type DB (line 20) | type DB interface type DefaultDB (line 46) | type DefaultDB struct method All (line 75) | func (db *DefaultDB) All(ctx context.Context) (users []*User, err erro... method ByLogin (line 95) | func (db *DefaultDB) ByLogin(ctx context.Context, login Login) (u *Use... method ByUUID (line 114) | func (db *DefaultDB) ByUUID(ctx context.Context, id UserID) (u *User, ... method Create (line 127) | func (db *DefaultDB) Create(ctx context.Context, u *User) (err error) { function NewDefaultDB (line 63) | func NewDefaultDB() (db *DefaultDB) { FILE: internal/aghuser/db_test.go function TestDB (line 14) | func TestDB(t *testing.T) { FILE: internal/aghuser/session.go constant SessionTokenLength (line 9) | SessionTokenLength = 16 type SessionToken (line 12) | type SessionToken function NewSessionToken (line 17) | func NewSessionToken() (t SessionToken) { type Session (line 24) | type Session struct FILE: internal/aghuser/sessionstorage.go type SessionStorage (line 23) | type SessionStorage interface type DefaultSessionStorageConfig (line 43) | type DefaultSessionStorageConfig struct type DefaultSessionStorage (line 66) | type DefaultSessionStorage struct method loadSessions (line 128) | func (ds *DefaultSessionStorage) loadSessions(ctx context.Context) (er... method processSessions (line 175) | func (ds *DefaultSessionStorage) processSessions( method bboltSessionHandler (line 204) | func (ds *DefaultSessionStorage) bboltSessionHandler( method New (line 304) | func (ds *DefaultSessionStorage) New(ctx context.Context, u *User) (s ... method store (line 326) | func (ds *DefaultSessionStorage) store(s *Session) (err error) { method FindByToken (line 359) | func (ds *DefaultSessionStorage) FindByToken(ctx context.Context, t Se... method DeleteByToken (line 383) | func (ds *DefaultSessionStorage) DeleteByToken(ctx context.Context, t ... method deleteByToken (line 393) | func (ds *DefaultSessionStorage) deleteByToken(ctx context.Context, t ... method remove (line 407) | func (ds *DefaultSessionStorage) remove(ctx context.Context, t Session... method Close (line 442) | func (ds *DefaultSessionStorage) Close() (err error) { function NewDefaultSessionStorage (line 92) | func NewDefaultSessionStorage( constant bboltBucketSessions (line 249) | bboltBucketSessions = "sessions-2" constant bboltSessionExpireLen (line 254) | bboltSessionExpireLen = 4 constant bboltSessionNameLen (line 258) | bboltSessionNameLen = 2 function bboltDecode (line 262) | func bboltDecode(data []byte) (s *Session, err error) { function bboltEncode (line 285) | func bboltEncode(s *Session) (data []byte) { FILE: internal/aghuser/sessionstorage_test.go function addSession (line 19) | func addSession( function TestDefaultSessionStorage (line 44) | func TestDefaultSessionStorage(t *testing.T) { FILE: internal/aghuser/user.go type UserID (line 12) | type UserID function NewUserID (line 16) | func NewUserID() (uid UserID, err error) { function MustNewUserID (line 24) | func MustNewUserID() (uid UserID) { type User (line 34) | type User struct FILE: internal/arpdb/arpdb.go type Interface (line 31) | type Interface interface function New (line 41) | func New(logger *slog.Logger) (arp Interface) { type Empty (line 46) | type Empty struct method Refresh (line 53) | func (Empty) Refresh(_ context.Context) (err error) { return nil } method Neighbors (line 57) | func (Empty) Neighbors() (ns []Neighbor) { return nil } type Neighbor (line 60) | type Neighbor struct method Clone (line 97) | func (n Neighbor) Clone() (clone Neighbor) { function newNeighbor (line 74) | func newNeighbor(host, ipStr, macStr string) (n *Neighbor, err error) { function validatedHostname (line 107) | func validatedHostname(logger *slog.Logger, h string) (host string) { type neighs (line 120) | type neighs struct method len (line 126) | func (ns *neighs) len() (l int) { method clone (line 135) | func (ns *neighs) clone() (cloned []Neighbor) { method reset (line 149) | func (ns *neighs) reset(with []Neighbor) { type parseNeighsFunc (line 161) | type parseNeighsFunc type cmdARPDB (line 165) | type cmdARPDB struct method Refresh (line 178) | func (arp *cmdARPDB) Refresh(ctx context.Context) (err error) { method Neighbors (line 212) | func (arp *cmdARPDB) Neighbors() (ns []Neighbor) { type arpdbs (line 218) | type arpdbs struct method Refresh (line 240) | func (arp *arpdbs) Refresh(ctx context.Context) (err error) { method Neighbors (line 262) | func (arp *arpdbs) Neighbors() (ns []Neighbor) { function newARPDBs (line 226) | func newARPDBs(arps ...Interface) (arp *arpdbs) { FILE: internal/arpdb/arpdb_bsd.go function newARPDB (line 15) | func newARPDB(logger *slog.Logger, cmdCons executil.CommandConstructor) ... function parseArpA (line 38) | func parseArpA(logger *slog.Logger, sc *bufio.Scanner, lenHint int) (ns ... FILE: internal/arpdb/arpdb_bsd_internal_test.go constant arpAOutput (line 10) | arpAOutput = ` FILE: internal/arpdb/arpdb_internal_test.go constant testTimeout (line 22) | testTimeout = 1 * time.Second type RunCmdFunc (line 28) | type RunCmdFunc function Test_New (line 30) | func Test_New(t *testing.T) { type TestARPDB (line 40) | type TestARPDB struct method Refresh (line 49) | func (arp *TestARPDB) Refresh(ctx context.Context) (err error) { method Neighbors (line 54) | func (arp *TestARPDB) Neighbors() (ns []Neighbor) { function Test_NewARPDBs (line 58) | func Test_NewARPDBs(t *testing.T) { function TestCmdARPDB_arpa (line 174) | func TestCmdARPDB_arpa(t *testing.T) { function TestEmptyARPDB (line 222) | func TestEmptyARPDB(t *testing.T) { FILE: internal/arpdb/arpdb_linux.go function newARPDB (line 22) | func newARPDB(logger *slog.Logger, cmdCons executil.CommandConstructor) ... type fsysARPDB (line 70) | type fsysARPDB struct method Refresh (line 80) | func (arp *fsysARPDB) Refresh(_ context.Context) (err error) { method Neighbors (line 132) | func (arp *fsysARPDB) Neighbors() (ns []Neighbor) { function parseNeighbor (line 109) | func parseNeighbor(line string) (n *Neighbor) { function parseArpAWrt (line 141) | func parseArpAWrt(logger *slog.Logger, sc *bufio.Scanner, lenHint int) (... function parseArpA (line 173) | func parseArpA(logger *slog.Logger, sc *bufio.Scanner, lenHint int) (ns ... function parseIPNeigh (line 206) | func parseIPNeigh(logger *slog.Logger, sc *bufio.Scanner, lenHint int) (... FILE: internal/arpdb/arpdb_linux_internal_test.go constant arpAOutputWrt (line 19) | arpAOutputWrt = ` constant arpAOutput (line 26) | arpAOutput = ` constant ipNeighOutput (line 33) | ipNeighOutput = ` function TestFSysARPDB (line 47) | func TestFSysARPDB(t *testing.T) { function TestCmdARPDB_linux (line 66) | func TestCmdARPDB_linux(t *testing.T) { FILE: internal/arpdb/arpdb_openbsd.go function newARPDB (line 15) | func newARPDB(logger *slog.Logger, cmdCons executil.CommandConstructor) ... function parseArpA (line 39) | func parseArpA(logger *slog.Logger, sc *bufio.Scanner, lenHint int) (ns ... FILE: internal/arpdb/arpdb_openbsd_internal_test.go constant arpAOutput (line 10) | arpAOutput = ` FILE: internal/arpdb/arpdb_windows.go function newARPDB (line 15) | func newARPDB(logger *slog.Logger, cmdCons executil.CommandConstructor) ... function parseArpA (line 36) | func parseArpA(logger *slog.Logger, sc *bufio.Scanner, lenHint int) (ns ... FILE: internal/arpdb/arpdb_windows_internal_test.go constant arpAOutput (line 10) | arpAOutput = ` FILE: internal/client/addrproc.go constant ErrClosed (line 20) | ErrClosed errors.Error = "use of closed address processor" type AddressProcessor (line 23) | type AddressProcessor interface type EmptyAddrProc (line 29) | type EmptyAddrProc struct method Process (line 35) | func (EmptyAddrProc) Process(_ context.Context, _ netip.Addr) {} method Close (line 38) | func (EmptyAddrProc) Close() (_ error) { return nil } type DefaultAddrProcConfig (line 41) | type DefaultAddrProcConfig struct type AddressUpdater (line 89) | type AddressUpdater interface type DefaultAddrProc (line 97) | type DefaultAddrProc struct method Process (line 219) | func (p *DefaultAddrProc) Process(ctx context.Context, ip netip.Addr) { method process (line 237) | func (p *DefaultAddrProc) process(ctx context.Context, catchPanics boo... method processRDNS (line 256) | func (p *DefaultAddrProc) processRDNS(ctx context.Context, ip netip.Ad... method shouldResolve (line 284) | func (p *DefaultAddrProc) shouldResolve(ip netip.Addr) (ok bool) { method processWHOIS (line 291) | func (p *DefaultAddrProc) processWHOIS(ctx context.Context, ip netip.A... method Close (line 315) | func (p *DefaultAddrProc) Close() (err error) { constant defaultQueueSize (line 132) | defaultQueueSize = 255 constant defaultCacheSize (line 136) | defaultCacheSize = 10_000 constant defaultIPTTL (line 140) | defaultIPTTL = 1 * time.Hour function NewDefaultAddrProc (line 145) | func NewDefaultAddrProc(c *DefaultAddrProcConfig) (p *DefaultAddrProc) { function newWHOIS (line 184) | func newWHOIS(logger *slog.Logger, dialFunc aghnet.DialContextFunc) (w w... FILE: internal/client/addrproc_test.go function TestEmptyAddrProc (line 23) | func TestEmptyAddrProc(t *testing.T) { function TestDefaultAddrProc_Process_rDNS (line 39) | func TestDefaultAddrProc_Process_rDNS(t *testing.T) { function newOnUpdateAddress (line 154) | func newOnUpdateAddress( function TestDefaultAddrProc_Process_WHOIS (line 171) | func TestDefaultAddrProc_Process_WHOIS(t *testing.T) { function TestDefaultAddrProc_Close (line 267) | func TestDefaultAddrProc_Close(t *testing.T) { FILE: internal/client/client.go type ClientID (line 22) | type ClientID function ValidateClientID (line 27) | func ValidateClientID(id string) (err error) { function isValidClientID (line 38) | func isValidClientID(id string) (ok bool) { type Source (line 44) | type Source method String (line 60) | func (cs Source) String() (s string) { method MarshalText (line 81) | func (cs Source) MarshalText() (text []byte, err error) { constant SourceWHOIS (line 48) | SourceWHOIS Source = iota + 1 constant SourceARP (line 49) | SourceARP constant SourceRDNS (line 50) | SourceRDNS constant SourceDHCP (line 51) | SourceDHCP constant SourceHostsFile (line 52) | SourceHostsFile constant SourcePersistent (line 53) | SourcePersistent type Runtime (line 86) | type Runtime struct method Info (line 124) | func (r *Runtime) Info() (cs Source, host string) { method setInfo (line 149) | func (r *Runtime) setInfo(cs Source, hosts []string) { method WHOIS (line 168) | func (r *Runtime) WHOIS() (info *whois.Info) { method setWHOIS (line 173) | func (r *Runtime) setWHOIS(info *whois.Info) { method unset (line 178) | func (r *Runtime) unset(cs Source) { method isEmpty (line 194) | func (r *Runtime) isEmpty() (ok bool) { method Addr (line 203) | func (r *Runtime) Addr() (ip netip.Addr) { method clone (line 208) | func (r *Runtime) clone() (c *Runtime) { function NewRuntime (line 117) | func NewRuntime(ip netip.Addr) (r *Runtime) { FILE: internal/client/client_test.go function TestMain (line 11) | func TestMain(m *testing.M) { constant testHost (line 16) | testHost = "client.example" constant testTimeout (line 19) | testTimeout = 1 * time.Second constant testWHOISCity (line 22) | testWHOISCity = "Brussels" FILE: internal/client/index.go type macKey (line 15) | type macKey function macToKey (line 19) | func macToKey(mac net.HardwareAddr) (key macKey) { type index (line 33) | type index struct method add (line 67) | func (ci *index) add(c *Persistent) { method clashesUID (line 96) | func (ci *index) clashesUID(c *Persistent) (err error) { method clashes (line 107) | func (ci *index) clashes(c *Persistent) (err error) { method clashesName (line 141) | func (ci *index) clashesName(c *Persistent) (existing *Persistent) { method clashesIP (line 156) | func (ci *index) clashesIP(c *Persistent) (p *Persistent, ip netip.Add... method clashesSubnet (line 169) | func (ci *index) clashesSubnet(c *Persistent) (p *Persistent, s netip.... method clashesMAC (line 195) | func (ci *index) clashesMAC(c *Persistent) (p *Persistent, mac net.Har... method find (line 209) | func (ci *index) find(id string) (c *Persistent, ok bool) { method findByClientID (line 233) | func (ci *index) findByClientID(clientID ClientID) (c *Persistent, ok ... method findByName (line 243) | func (ci *index) findByName(name string) (c *Persistent, found bool) { method findByIP (line 253) | func (ci *index) findByIP(ip netip.Addr) (c *Persistent, found bool) { method findByCIDR (line 281) | func (ci *index) findByCIDR(subnet netip.Prefix) (c *Persistent, ok bo... method findByMAC (line 299) | func (ci *index) findByMAC(mac net.HardwareAddr) (c *Persistent, found... method findByIPWithoutZone (line 315) | func (ci *index) findByIPWithoutZone(ip netip.Addr) (c *Persistent) { method remove (line 331) | func (ci *index) remove(c *Persistent) { method size (line 355) | func (ci *index) size() (n int) { method rangeByName (line 361) | func (ci *index) rangeByName(f func(c *Persistent) (cont bool)) { function newIndex (line 54) | func newIndex() (ci *index) { FILE: internal/client/index_internal_test.go function newIDIndex (line 15) | func newIDIndex(m []*Persistent) (ci *index) { function TestClientIndex_Find (line 27) | func TestClientIndex_Find(t *testing.T) { function TestClientIndex_Clashes (line 128) | func TestClientIndex_Clashes(t *testing.T) { function TestMACToKey (line 185) | func TestMACToKey(t *testing.T) { function TestIndex_FindByIPWithoutZone (line 243) | func TestIndex_FindByIPWithoutZone(t *testing.T) { function TestClientIndex_RangeByName (line 292) | func TestClientIndex_RangeByName(t *testing.T) { function TestIndex_FindByName (line 343) | func TestIndex_FindByName(t *testing.T) { function TestIndex_FindByMAC (line 399) | func TestIndex_FindByMAC(t *testing.T) { FILE: internal/client/persistent.go type UID (line 23) | type UID method MarshalText (line 47) | func (uid UID) MarshalText() ([]byte, error) { method UnmarshalText (line 55) | func (uid *UID) UnmarshalText(data []byte) error { function NewUID (line 27) | func NewUID() (uid UID, err error) { function MustNewUID (line 34) | func MustNewUID() (uid UID) { type Persistent (line 60) | type Persistent struct method validate (line 136) | func (c *Persistent) validate(ctx context.Context, l *slog.Logger, all... method SetIDs (line 173) | func (c *Persistent) SetIDs(ids []string) (err error) { method setID (line 215) | func (c *Persistent) setID(id string) (err error) { method Identifiers (line 254) | func (c *Persistent) Identifiers() (ids []string) { method idendifiersLen (line 277) | func (c *Persistent) idendifiersLen() (n int) { method EqualIDs (line 283) | func (c *Persistent) EqualIDs(prev *Persistent) (equal bool) { method ShallowClone (line 292) | func (c *Persistent) ShallowClone() (clone *Persistent) { function subnetCompare (line 196) | func subnetCompare(x, y netip.Prefix) (cmp int) { FILE: internal/client/persistent_internal_test.go function TestPersistent_EqualIDs (line 10) | func TestPersistent_EqualIDs(t *testing.T) { FILE: internal/client/runtimeindex.go type runtimeIndex (line 6) | type runtimeIndex struct method client (line 20) | func (ri *runtimeIndex) client(ip netip.Addr) (rc *Runtime) { method add (line 26) | func (ri *runtimeIndex) add(rc *Runtime) { method rangeClients (line 32) | func (ri *runtimeIndex) rangeClients(f func(rc *Runtime) (cont bool)) { method setInfo (line 42) | func (ri *runtimeIndex) setInfo(ip netip.Addr, cs Source, hosts []stri... method clearSource (line 55) | func (ri *runtimeIndex) clearSource(src Source) { method removeEmpty (line 63) | func (ri *runtimeIndex) removeEmpty() (n int) { function newRuntimeIndex (line 12) | func newRuntimeIndex() (ri *runtimeIndex) { FILE: internal/client/storage.go type DHCP (line 53) | type DHCP interface type EmptyDHCP (line 69) | type EmptyDHCP struct method Leases (line 75) | func (EmptyDHCP) Leases() (leases []*dhcpsvc.Lease) { return nil } method HostByIP (line 78) | func (EmptyDHCP) HostByIP(_ netip.Addr) (host string) { return "" } method MACByIP (line 81) | func (EmptyDHCP) MACByIP(_ netip.Addr) (mac net.HardwareAddr) { return... type HostsContainer (line 85) | type HostsContainer interface type StorageConfig (line 90) | type StorageConfig struct type Storage (line 127) | type Storage struct method Start (line 206) | func (s *Storage) Start(ctx context.Context) (err error) { method Shutdown (line 216) | func (s *Storage) Shutdown(_ context.Context) (err error) { method periodicARPUpdate (line 224) | func (s *Storage) periodicARPUpdate(ctx context.Context) { method ReloadARP (line 240) | func (s *Storage) ReloadARP(ctx context.Context) { method addFromSystemARP (line 248) | func (s *Storage) addFromSystemARP(ctx context.Context) { method handleHostsUpdates (line 285) | func (s *Storage) handleHostsUpdates(ctx context.Context) { method addFromHostsFile (line 308) | func (s *Storage) addFromHostsFile(ctx context.Context, hosts *hostsfi... method UpdateAddress (line 340) | func (s *Storage) UpdateAddress(ctx context.Context, ip netip.Addr, ho... method UpdateDHCP (line 359) | func (s *Storage) UpdateDHCP(ctx context.Context) { method setWHOISInfo (line 386) | func (s *Storage) setWHOISInfo(ctx context.Context, ip netip.Addr, wi ... method Add (line 410) | func (s *Storage) Add(ctx context.Context, p *Persistent) (err error) { method Find (line 529) | func (s *Storage) Find(params *FindParams) (p *Persistent, ok bool) { method findByIP (line 564) | func (s *Storage) findByIP(addr netip.Addr) (p *Persistent, ok bool) { method FindLoose (line 587) | func (s *Storage) FindLoose(ip netip.Addr, id string) (p *Persistent, ... method RemoveByName (line 611) | func (s *Storage) RemoveByName(ctx context.Context, name string) (ok b... method Update (line 632) | func (s *Storage) Update(ctx context.Context, name string, p *Persiste... method RangeByName (line 670) | func (s *Storage) RangeByName(f func(c *Persistent) (cont bool)) { method Size (line 678) | func (s *Storage) Size() (n int) { method ClientRuntime (line 687) | func (s *Storage) ClientRuntime(ip netip.Addr) (rc *Runtime) { method RangeRuntime (line 715) | func (s *Storage) RangeRuntime(f func(rc *Runtime) (cont bool)) { method AllowedTags (line 724) | func (s *Storage) AllowedTags() (tags []string) { method CustomUpstreamConfig (line 730) | func (s *Storage) CustomUpstreamConfig( method UpdateCommonUpstreamConfig (line 751) | func (s *Storage) UpdateCommonUpstreamConfig(conf *CommonUpstreamConfi... method ClearUpstreamCache (line 760) | func (s *Storage) ClearUpstreamCache() { method ApplyClientFiltering (line 770) | func (s *Storage) ApplyClientFiltering(id string, addr netip.Addr, set... function NewStorage (line 172) | func NewStorage(ctx context.Context, conf *StorageConfig) (s *Storage, e... type FindParams (line 450) | type FindParams struct method Set (line 481) | func (p *FindParams) Set(id string) (err error) { constant ErrBadIdentifier (line 472) | ErrBadIdentifier errors.Error = "bad client identifier" FILE: internal/client/storage_test.go function newTestStorage (line 35) | func newTestStorage(tb testing.TB, clock timeutil.Clock) (s *client.Stor... type testHostsContainer (line 54) | type testHostsContainer struct method Upd (line 62) | func (c *testHostsContainer) Upd() (updates <-chan *hostsfile.DefaultS... type Interface (line 68) | type Interface interface type testARPDB (line 78) | type testARPDB struct method Refresh (line 87) | func (c *testARPDB) Refresh(ctx context.Context) (err error) { method Neighbors (line 92) | func (c *testARPDB) Neighbors() (ns []arpdb.Neighbor) { type testDHCP (line 97) | type testDHCP struct method Leases (line 107) | func (t *testDHCP) Leases() (leases []*dhcpsvc.Lease) { return t.OnLea... method HostByIP (line 110) | func (t *testDHCP) HostByIP(ip netip.Addr) (host string) { return t.On... method MACByIP (line 113) | func (t *testDHCP) MACByIP(ip netip.Addr) (mac net.HardwareAddr) { ret... function compareRuntimeInfo (line 117) | func compareRuntimeInfo(rc *client.Runtime, src client.Source, host stri... function TestStorage_Add_hostsfile (line 128) | func TestStorage_Add_hostsfile(t *testing.T) { function TestStorage_Add_arp (line 202) | func TestStorage_Add_arp(t *testing.T) { function TestStorage_Add_whois (line 278) | func TestStorage_Add_whois(t *testing.T) { function TestClientsDHCP (line 336) | func TestClientsDHCP(t *testing.T) { function TestClientsAddExisting (line 549) | func TestClientsAddExisting(t *testing.T) { function newStorage (line 640) | func newStorage(tb testing.TB, m []*client.Persistent) (s *client.Storag... function TestStorage_Add (line 661) | func TestStorage_Add(t *testing.T) { function TestStorage_RemoveByName (line 804) | func TestStorage_RemoveByName(t *testing.T) { function TestStorage_Find (line 850) | func TestStorage_Find(t *testing.T) { function TestStorage_FindLoose (line 959) | func TestStorage_FindLoose(t *testing.T) { function TestStorage_Update (line 1020) | func TestStorage_Update(t *testing.T) { function TestStorage_RangeByName (line 1109) | func TestStorage_RangeByName(t *testing.T) { function TestStorage_CustomUpstreamConfig (line 1160) | func TestStorage_CustomUpstreamConfig(t *testing.T) { function BenchmarkFindParams_Set (line 1295) | func BenchmarkFindParams_Set(b *testing.B) { function BenchmarkStorage_Find (line 1371) | func BenchmarkStorage_Find(b *testing.B) { FILE: internal/client/upstreammanager.go type CommonUpstreamConfig (line 21) | type CommonUpstreamConfig struct type customUpstreamConfig (line 31) | type customUpstreamConfig struct type upstreamManager (line 59) | type upstreamManager struct method updateCommonUpstreamConfig (line 95) | func (m *upstreamManager) updateCommonUpstreamConfig(conf *CommonUpstr... method updateCustomUpstreamConfig (line 104) | func (m *upstreamManager) updateCustomUpstreamConfig(c *Persistent) { method customUpstreamConfig (line 122) | func (m *upstreamManager) customUpstreamConfig( method isConfigChanged (line 160) | func (m *upstreamManager) isConfigChanged(cliConf *customUpstreamConfi... method clearUpstreamCache (line 166) | func (m *upstreamManager) clearUpstreamCache() { method remove (line 176) | func (m *upstreamManager) remove(uid UID) (err error) { method close (line 193) | func (m *upstreamManager) close() (err error) { function newUpstreamManager (line 84) | func newUpstreamManager(baseLogger *slog.Logger, clock timeutil.Clock) (... function newCustomUpstreamConfig (line 209) | func newCustomUpstreamConfig( FILE: internal/configmigrate/configmigrate.go constant LastSchemaVersion (line 5) | LastSchemaVersion uint = 33 FILE: internal/configmigrate/configmigrate_internal_test.go constant testTimeout (line 10) | testTimeout = 1 * time.Second FILE: internal/configmigrate/configmigrate_test.go constant testTimeout (line 10) | testTimeout = 1 * time.Second FILE: internal/configmigrate/migrations_internal_test.go function emptyMigrator (line 17) | func emptyMigrator() (m *Migrator) { function TestUpgradeSchema1to2 (line 25) | func TestUpgradeSchema1to2(t *testing.T) { function TestUpgradeSchema2to3 (line 53) | func TestUpgradeSchema2to3(t *testing.T) { function TestUpgradeSchema5to6 (line 89) | func TestUpgradeSchema5to6(t *testing.T) { function TestUpgradeSchema7to8 (line 184) | func TestUpgradeSchema7to8(t *testing.T) { function TestUpgradeSchema8to9 (line 214) | func TestUpgradeSchema8to9(t *testing.T) { function assertEqualExcept (line 277) | func assertEqualExcept(tb testing.TB, oldConf, newConf yobj, oldKeys, ne... function testDiskConf (line 290) | func testDiskConf(schemaVersion int) (diskConf yobj) { function testDNSConf (line 323) | func testDNSConf(schemaVersion int) (dnsConf yobj) { function TestAddQUICPort (line 349) | func TestAddQUICPort(t *testing.T) { function TestUpgradeSchema9to10 (line 433) | func TestUpgradeSchema9to10(t *testing.T) { function TestUpgradeSchema10to11 (line 519) | func TestUpgradeSchema10to11(t *testing.T) { function TestUpgradeSchema11to12 (line 574) | func TestUpgradeSchema11to12(t *testing.T) { function TestUpgradeSchema12to13 (line 687) | func TestUpgradeSchema12to13(t *testing.T) { function TestUpgradeSchema13to14 (line 739) | func TestUpgradeSchema13to14(t *testing.T) { function TestUpgradeSchema14to15 (line 827) | func TestUpgradeSchema14to15(t *testing.T) { function TestUpgradeSchema15to16 (line 881) | func TestUpgradeSchema15to16(t *testing.T) { function TestUpgradeSchema16to17 (line 946) | func TestUpgradeSchema16to17(t *testing.T) { function TestUpgradeSchema17to18 (line 1013) | func TestUpgradeSchema17to18(t *testing.T) { function TestUpgradeSchema18to19 (line 1078) | func TestUpgradeSchema18to19(t *testing.T) { function TestUpgradeSchema19to20 (line 1168) | func TestUpgradeSchema19to20(t *testing.T) { function TestUpgradeSchema20to21 (line 1286) | func TestUpgradeSchema20to21(t *testing.T) { function TestUpgradeSchema21to22 (line 1335) | func TestUpgradeSchema21to22(t *testing.T) { function TestUpgradeSchema22to23 (line 1411) | func TestUpgradeSchema22to23(t *testing.T) { function TestUpgradeSchema23to24 (line 1470) | func TestUpgradeSchema23to24(t *testing.T) { function TestUpgradeSchema24to25 (line 1543) | func TestUpgradeSchema24to25(t *testing.T) { function TestUpgradeSchema25to26 (line 1636) | func TestUpgradeSchema25to26(t *testing.T) { function TestUpgradeSchema26to27 (line 1741) | func TestUpgradeSchema26to27(t *testing.T) { function TestUpgradeSchema27to28 (line 1830) | func TestUpgradeSchema27to28(t *testing.T) { FILE: internal/configmigrate/migrator.go type Config (line 13) | type Config struct type Migrator (line 26) | type Migrator struct method Migrate (line 45) | func (m *Migrator) Migrate( method upgradeConfigSchema (line 108) | func (m *Migrator) upgradeConfigSchema( function New (line 33) | func New(c *Config) (m *Migrator) { function validateVersion (line 89) | func validateVersion(current, target uint) (err error) { FILE: internal/configmigrate/migrator_test.go function getField (line 26) | func getField[T any](t require.TestingT, obj any, indexes ...any) (val T) { function TestMigrateConfig_Migrate (line 52) | func TestMigrateConfig_Migrate(t *testing.T) { function TestMigrateConfig_Migrate_v29 (line 242) | func TestMigrateConfig_Migrate_v29(t *testing.T) { FILE: internal/configmigrate/v1.go method migrateTo1 (line 23) | func (m *Migrator) migrateTo1(ctx context.Context, diskConf yobj) (err e... FILE: internal/configmigrate/v10.go method migrateTo10 (line 34) | func (m *Migrator) migrateTo10(_ context.Context, diskConf yobj) (err er... function addQUICPorts (line 71) | func addQUICPorts(ups yarr, port int) (err error) { function addQUICPort (line 85) | func addQUICPort(ups string, port int) (withPort string) { FILE: internal/configmigrate/v11.go method migrateTo11 (line 19) | func (m *Migrator) migrateTo11(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v12.go method migrateTo12 (line 21) | func (m *Migrator) migrateTo12(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v13.go method migrateTo13 (line 20) | func (m *Migrator) migrateTo13(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v14.go method migrateTo14 (line 32) | func (m *Migrator) migrateTo14(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v15.go method migrateTo15 (line 35) | func (m *Migrator) migrateTo15(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v16.go method migrateTo16 (line 48) | func (m *Migrator) migrateTo16(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v17.go method migrateTo17 (line 23) | func (m *Migrator) migrateTo17(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v18.go method migrateTo18 (line 27) | func (m *Migrator) migrateTo18(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v19.go method migrateTo19 (line 37) | func (m *Migrator) migrateTo19(ctx context.Context, diskConf yobj) (err ... FILE: internal/configmigrate/v2.go method migrateTo2 (line 25) | func (m *Migrator) migrateTo2(ctx context.Context, diskConf yobj) (err e... FILE: internal/configmigrate/v20.go method migrateTo20 (line 25) | func (m *Migrator) migrateTo20(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v21.go method migrateTo21 (line 27) | func (m *Migrator) migrateTo21(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v22.go method migrateTo22 (line 34) | func (m *Migrator) migrateTo22(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v23.go method migrateTo23 (line 27) | func (m *Migrator) migrateTo23(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v24.go method migrateTo24 (line 33) | func (m *Migrator) migrateTo24(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v25.go method migrateTo25 (line 19) | func (m *Migrator) migrateTo25(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v26.go method migrateTo26 (line 78) | func (m *Migrator) migrateTo26(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v27.go method migrateTo27 (line 32) | func (m *Migrator) migrateTo27(_ context.Context, diskConf yobj) (err er... function replaceDot (line 48) | func replaceDot(diskConf yobj, key string) (err error) { FILE: internal/configmigrate/v28.go method migrateTo28 (line 23) | func (m *Migrator) migrateTo28(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v29.go method migrateTo29 (line 30) | func (m Migrator) migrateTo29(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v3.go method migrateTo3 (line 19) | func (m *Migrator) migrateTo3(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v30.go method migrateTo30 (line 19) | func (m Migrator) migrateTo30(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v31.go method migrateTo31 (line 23) | func (m *Migrator) migrateTo31(_ context.Context, diskConf yobj) (err er... FILE: internal/configmigrate/v32.go method migrateTo32 (line 22) | func (m Migrator) migrateTo32(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v33.go method migrateTo33 (line 30) | func (m Migrator) migrateTo33(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v4.go method migrateTo4 (line 19) | func (m *Migrator) migrateTo4(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v5.go method migrateTo5 (line 24) | func (m *Migrator) migrateTo5(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v6.go method migrateTo6 (line 30) | func (m *Migrator) migrateTo6(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v7.go method migrateTo7 (line 37) | func (m *Migrator) migrateTo7(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v8.go method migrateTo8 (line 21) | func (m *Migrator) migrateTo8(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/v9.go method migrateTo9 (line 20) | func (m *Migrator) migrateTo9(_ context.Context, diskConf yobj) (err err... FILE: internal/configmigrate/yaml.go function fieldVal (line 17) | func fieldVal[T any](obj yobj, key string) (v T, ok bool, err error) { function moveVal (line 37) | func moveVal[T any](src, dst yobj, srcKey, dstKey string) (err error) { function moveSameVal (line 50) | func moveSameVal[T any](src, dst yobj, key string) (err error) { FILE: internal/dhcpd/bitset.go constant bitsPerWord (line 3) | bitsPerWord = 64 type bitSet (line 6) | type bitSet struct method isSet (line 18) | func (s *bitSet) isSet(n uint64) (ok bool) { method set (line 33) | func (s *bitSet) set(n uint64, ok bool) { function newBitSet (line 11) | func newBitSet() (s *bitSet) { FILE: internal/dhcpd/bitset_internal_test.go function TestBitSet (line 11) | func TestBitSet(t *testing.T) { FILE: internal/dhcpd/broadcast_bsd.go method broadcast (line 10) | func (c *dhcpConn) broadcast(respData []byte, peer *net.UDPAddr) (n int,... FILE: internal/dhcpd/broadcast_bsd_internal_test.go function TestDHCPConn_Broadcast (line 15) | func TestDHCPConn_Broadcast(t *testing.T) { FILE: internal/dhcpd/broadcast_others.go method broadcast (line 10) | func (c *dhcpConn) broadcast(respData []byte, peer *net.UDPAddr) (n int,... FILE: internal/dhcpd/broadcast_others_internal_test.go function TestDHCPConn_Broadcast (line 15) | func TestDHCPConn_Broadcast(t *testing.T) { FILE: internal/dhcpd/config.go type ServerConfig (line 21) | type ServerConfig struct type DHCPServer (line 63) | type DHCPServer interface type V4ServerConf (line 101) | type V4ServerConf struct method Validate (line 172) | func (c *V4ServerConf) Validate() (err error) { constant errNilConfig (line 155) | errNilConfig errors.Error = "nil config" function ensureV4 (line 159) | func ensureV4(ip netip.Addr, kind string) (ip4 netip.Addr, err error) { type V6ServerConf (line 244) | type V6ServerConf struct FILE: internal/dhcpd/conn_bsd.go type dhcpUnicastAddr (line 26) | type dhcpUnicastAddr struct type dhcpConn (line 38) | type dhcpConn struct method WriteTo (line 86) | func (c *dhcpConn) WriteTo(p []byte, addr net.Addr) (n int, err error) { method ReadFrom (line 122) | func (c *dhcpConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) { method unicast (line 127) | func (c *dhcpConn) unicast(respData []byte, peer *dhcpUnicastAddr) (n ... method Close (line 138) | func (c *dhcpConn) Close() (err error) { method LocalAddr (line 149) | func (c *dhcpConn) LocalAddr() (a net.Addr) { method SetDeadline (line 154) | func (c *dhcpConn) SetDeadline(t time.Time) (err error) { method SetReadDeadline (line 159) | func (c *dhcpConn) SetReadDeadline(t time.Time) error { method SetWriteDeadline (line 168) | func (c *dhcpConn) SetWriteDeadline(t time.Time) error { method buildEtherPkt (line 184) | func (c *dhcpConn) buildEtherPkt(payload []byte, peer *dhcpUnicastAddr... method newDHCPConn (line 54) | func (s *v4Server) newDHCPConn(iface *net.Interface) (c net.PacketConn, ... constant ipv4DefaultTTL (line 180) | ipv4DefaultTTL = 64 method send (line 234) | func (s *v4Server) send(peer net.Addr, conn net.PacketConn, req, resp *d... FILE: internal/dhcpd/conn_bsd_internal_test.go function TestDHCPConn_WriteTo_common (line 20) | func TestDHCPConn_WriteTo_common(t *testing.T) { function TestBuildEtherPkt (line 54) | func TestBuildEtherPkt(t *testing.T) { function TestV4Server_Send (line 116) | func TestV4Server_Send(t *testing.T) { FILE: internal/dhcpd/conn_linux.go type dhcpUnicastAddr (line 24) | type dhcpUnicastAddr struct type dhcpConn (line 36) | type dhcpConn struct method WriteTo (line 84) | func (c *dhcpConn) WriteTo(p []byte, addr net.Addr) (n int, err error) { method ReadFrom (line 120) | func (c *dhcpConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) { method unicast (line 125) | func (c *dhcpConn) unicast(respData []byte, peer *dhcpUnicastAddr) (n ... method Close (line 136) | func (c *dhcpConn) Close() (err error) { method LocalAddr (line 147) | func (c *dhcpConn) LocalAddr() (a net.Addr) { method SetDeadline (line 152) | func (c *dhcpConn) SetDeadline(t time.Time) (err error) { method SetReadDeadline (line 157) | func (c *dhcpConn) SetReadDeadline(t time.Time) error { method SetWriteDeadline (line 166) | func (c *dhcpConn) SetWriteDeadline(t time.Time) error { method buildEtherPkt (line 182) | func (c *dhcpConn) buildEtherPkt(payload []byte, peer *dhcpUnicastAddr... method newDHCPConn (line 52) | func (s *v4Server) newDHCPConn(iface *net.Interface) (c net.PacketConn, ... constant ipv4DefaultTTL (line 178) | ipv4DefaultTTL = 64 method send (line 232) | func (s *v4Server) send(peer net.Addr, conn net.PacketConn, req, resp *d... FILE: internal/dhcpd/conn_linux_internal_test.go function TestDHCPConn_WriteTo_common (line 18) | func TestDHCPConn_WriteTo_common(t *testing.T) { function TestBuildEtherPkt (line 52) | func TestBuildEtherPkt(t *testing.T) { function TestV4Server_Send (line 114) | func TestV4Server_Send(t *testing.T) { FILE: internal/dhcpd/conn_unix.go function wrapErrs (line 13) | func wrapErrs(action string, udpConnErr, rawConnErr error) (err error) { FILE: internal/dhcpd/db.go constant dataFilename (line 24) | dataFilename = "leases.json" constant dataVersion (line 27) | dataVersion = 1 type dataLeases (line 31) | type dataLeases struct type dbLease (line 40) | type dbLease struct method toLease (line 69) | func (dl *dbLease) toLease() (l *dhcpsvc.Lease, err error) { function fromLease (line 49) | func fromLease(l *dhcpsvc.Lease) (dl *dbLease) { method dbLoad (line 93) | func (s *server) dbLoad() (err error) { method dbStore (line 152) | func (s *server) dbStore() (err error) { function writeDB (line 171) | func writeDB(path string, leases []*dbLease) (err error) { FILE: internal/dhcpd/dhcpd.go constant DefaultDHCPLeaseTTL (line 19) | DefaultDHCPLeaseTTL = uint32(timeutil.Day / time.Second) constant DefaultDHCPTimeoutICMP (line 22) | DefaultDHCPTimeoutICMP = 1000 constant defaultMaxAttempts (line 27) | defaultMaxAttempts int = 10 constant defaultBackoff (line 28) | defaultBackoff time.Duration = 500 * time.Millisecond type OnLeaseChangedT (line 32) | type OnLeaseChangedT constant LeaseChangedAdded (line 36) | LeaseChangedAdded = iota constant LeaseChangedAddedStatic (line 37) | LeaseChangedAddedStatic constant LeaseChangedRemovedStatic (line 38) | LeaseChangedRemovedStatic constant LeaseChangedRemovedAll (line 39) | LeaseChangedRemovedAll constant LeaseChangedDBStore (line 41) | LeaseChangedDBStore type GetLeasesFlags (line 45) | type GetLeasesFlags constant LeasesDynamic (line 49) | LeasesDynamic GetLeasesFlags = 0b01 constant LeasesStatic (line 50) | LeasesStatic GetLeasesFlags = 0b10 constant LeasesAll (line 52) | LeasesAll = LeasesDynamic | LeasesStatic type Interface (line 56) | type Interface interface type server (line 91) | type server struct method setServers (line 163) | func (s *server) setServers( method Enabled (line 197) | func (s *server) Enabled() (ok bool) { method resetLeases (line 202) | func (s *server) resetLeases() (err error) { method onNotify (line 219) | func (s *server) onNotify(flags uint32) { method notify (line 234) | func (s *server) notify(flags int) { method WriteDiskConfig (line 241) | func (s *server) WriteDiskConfig(c *ServerConfig) { method Start (line 251) | func (s *server) Start(ctx context.Context) (err error) { method Stop (line 266) | func (s *server) Stop() (err error) { method Leases (line 281) | func (s *server) Leases() (leases []*dhcpsvc.Lease) { method MACByIP (line 287) | func (s *server) MACByIP(ip netip.Addr) (mac net.HardwareAddr) { method HostByIP (line 298) | func (s *server) HostByIP(ip netip.Addr) (host string) { method IPByHost (line 309) | func (s *server) IPByHost(host string) (ip netip.Addr) { method AddStaticLease (line 314) | func (s *server) AddStaticLease(l *dhcpsvc.Lease) error { function Create (line 108) | func Create(ctx context.Context, conf *ServerConfig) (s *server, err err... FILE: internal/dhcpd/dhcpd_internal_test.go constant testTimeout (line 10) | testTimeout = 1 * time.Second FILE: internal/dhcpd/dhcpd_unix_internal_test.go function TestMain (line 19) | func TestMain(m *testing.M) { function testNotify (line 23) | func testNotify(flags uint32) { function TestDB (line 27) | func TestDB(t *testing.T) { function TestV4Server_badRange (line 89) | func TestV4Server_badRange(t *testing.T) { function cloneUDPAddr (line 133) | func cloneUDPAddr(a *net.UDPAddr) (clone *net.UDPAddr) { FILE: internal/dhcpd/http_unix.go type v4ServerConfJSON (line 29) | type v4ServerConfJSON struct method toServerConf (line 37) | func (j *v4ServerConfJSON) toServerConf() *V4ServerConf { type v6ServerConfJSON (line 51) | type v6ServerConfJSON struct function v6JSONToServerConf (line 56) | func v6JSONToServerConf(j *v6ServerConfJSON) V6ServerConf { type dhcpStatusResponse (line 68) | type dhcpStatusResponse struct type leaseStatic (line 78) | type leaseStatic struct method toLease (line 100) | func (l *leaseStatic) toLease() (lease *dhcpsvc.Lease, err error) { function leasesToStatic (line 85) | func leasesToStatic(leases []*dhcpsvc.Lease) (static []*leaseStatic) { type leaseDynamic (line 115) | type leaseDynamic struct function leasesToDynamic (line 123) | func leasesToDynamic(leases []*dhcpsvc.Lease) (dynamic []*leaseDynamic) { method handleDHCPStatus (line 142) | func (s *server) handleDHCPStatus(w http.ResponseWriter, r *http.Request) { method enableDHCP (line 178) | func (s *server) enableDHCP(ctx context.Context, ifaceName string) (code... type dhcpServerConfigJSON (line 226) | type dhcpServerConfigJSON struct method handleDHCPSetConfigV4 (line 233) | func (s *server) handleDHCPSetConfigV4( method handleDHCPSetConfigV6 (line 266) | func (s *server) handleDHCPSetConfigV6( method createServers (line 298) | func (s *server) createServers(conf *dhcpServerConfigJSON) (srv4, srv6 D... method handleDHCPSetConfig (line 318) | func (s *server) handleDHCPSetConfig(w http.ResponseWriter, r *http.Requ... method setConfFromJSON (line 384) | func (s *server) setConfFromJSON(conf *dhcpServerConfigJSON, srv4, srv6 ... type netInterfaceJSON (line 402) | type netInterfaceJSON struct method handleDHCPInterfaces (line 413) | func (s *server) handleDHCPInterfaces(w http.ResponseWriter, r *http.Req... function newNetInterfaceJSON (line 462) | func newNetInterfaceJSON( type dhcpSearchOtherResult (line 526) | type dhcpSearchOtherResult struct type dhcpStaticIPStatus (line 533) | type dhcpStaticIPStatus struct type dhcpSearchV4Result (line 541) | type dhcpSearchV4Result struct type dhcpSearchV6Result (line 548) | type dhcpSearchV6Result struct type dhcpSearchResult (line 553) | type dhcpSearchResult struct type findActiveServerReq (line 560) | type findActiveServerReq struct method handleDHCPFindActiveServer (line 568) | func (s *server) handleDHCPFindActiveServer(w http.ResponseWriter, r *ht... method setOtherDHCPResult (line 624) | func (s *server) setOtherDHCPResult( method parseLease (line 647) | func (s *server) parseLease(r io.Reader) (srv DHCPServer, lease *dhcpsvc... method handleDHCPAddStaticLease (line 676) | func (s *server) handleDHCPAddStaticLease(w http.ResponseWriter, r *http... method handleDHCPRemoveStaticLease (line 694) | func (s *server) handleDHCPRemoveStaticLease(w http.ResponseWriter, r *h... method handleDHCPUpdateStaticLease (line 712) | func (s *server) handleDHCPUpdateStaticLease(w http.ResponseWriter, r *h... method handleReset (line 728) | func (s *server) handleReset(w http.ResponseWriter, r *http.Request) { method handleResetLeases (line 775) | func (s *server) handleResetLeases(w http.ResponseWriter, r *http.Reques... method registerHandlers (line 787) | func (s *server) registerHandlers() { FILE: internal/dhcpd/http_unix_internal_test.go function defaultResponse (line 21) | func defaultResponse() *dhcpStatusResponse { function handleLease (line 38) | func handleLease(tb testing.TB, lease *leaseStatic, handler http.Handler... function checkStatus (line 58) | func checkStatus(t *testing.T, s *server, want *dhcpStatusResponse) { function TestServer_handleDHCPStatus (line 74) | func TestServer_handleDHCPStatus(t *testing.T) { function TestServer_HandleUpdateStaticLease (line 154) | func TestServer_HandleUpdateStaticLease(t *testing.T) { function TestServer_HandleUpdateStaticLease_validation (line 252) | func TestServer_HandleUpdateStaticLease_validation(t *testing.T) { FILE: internal/dhcpd/http_windows.go type jsonError (line 16) | type jsonError struct method notImplemented (line 26) | func (s *server) notImplemented(w http.ResponseWriter, r *http.Request) { method registerHandlers (line 41) | func (s *server) registerHandlers() { FILE: internal/dhcpd/http_windows_internal_test.go function TestServer_notImplemented (line 16) | func TestServer_notImplemented(t *testing.T) { FILE: internal/dhcpd/iprange.go type ipRange (line 21) | type ipRange struct method contains (line 58) | func (r *ipRange) contains(ip net.IP) (ok bool) { method containsInt (line 69) | func (r *ipRange) containsInt(ipInt *big.Int) (ok bool) { method find (line 79) | func (r *ipRange) find(p ipPredicate) (ip net.IP) { method offset (line 98) | func (r *ipRange) offset(ip net.IP) (offset uint64, ok bool) { method String (line 117) | func (r *ipRange) String() (s string) { constant maxRangeLen (line 28) | maxRangeLen = math.MaxUint32 function newIPRange (line 32) | func newIPRange(start, end net.IP) (r *ipRange, err error) { type ipPredicate (line 75) | type ipPredicate FILE: internal/dhcpd/iprange_internal_test.go function TestNewIPRange (line 12) | func TestNewIPRange(t *testing.T) { function TestIPRange_Contains (line 74) | func TestIPRange_Contains(t *testing.T) { function TestIPRange_Find (line 87) | func TestIPRange_Find(t *testing.T) { function TestIPRange_Offset (line 105) | func TestIPRange_Offset(t *testing.T) { FILE: internal/dhcpd/migrate.go constant leaseExpireStatic (line 21) | leaseExpireStatic = 1 constant dbFilename (line 26) | dbFilename = "leases.db" type leaseJSON (line 32) | type leaseJSON struct function readOldDB (line 40) | func readOldDB(path string) (leases []*leaseJSON, err error) { function migrateDB (line 64) | func migrateDB(conf *ServerConfig) (err error) { function normalizeIP (line 109) | func normalizeIP(ip net.IP) (normalized net.IP) { FILE: internal/dhcpd/migrate_internal_test.go constant testData (line 15) | testData = `[ function TestMigrateDB (line 20) | func TestMigrateDB(t *testing.T) { FILE: internal/dhcpd/options_unix.go constant typDel (line 24) | typDel = "del" constant typBool (line 25) | typBool = "bool" constant typDur (line 26) | typDur = "dur" constant typHex (line 27) | typHex = "hex" constant typIP (line 28) | typIP = "ip" constant typIPs (line 29) | typIPs = "ips" constant typText (line 30) | typText = "text" constant typU8 (line 31) | typU8 = "u8" constant typU16 (line 32) | typU16 = "u16" function parseDHCPOptionHex (line 36) | func parseDHCPOptionHex(s string) (val dhcpv4.OptionValue, err error) { function parseDHCPOptionIP (line 47) | func parseDHCPOptionIP(s string) (val dhcpv4.OptionValue, err error) { function parseDHCPOptionIPs (line 63) | func parseDHCPOptionIPs(s string) (val dhcpv4.OptionValue, err error) { function parseDHCPOptionDur (line 80) | func parseDHCPOptionDur(s string) (val dhcpv4.OptionValue, err error) { function parseDHCPOptionUint (line 92) | func parseDHCPOptionUint(s string, bitSize int) (val dhcpv4.OptionValue,... function parseDHCPOptionBool (line 111) | func parseDHCPOptionBool(s string) (val dhcpv4.OptionValue, err error) { function parseDHCPOptionVal (line 127) | func parseDHCPOptionVal(typ, valStr string) (val dhcpv4.OptionValue, err... function parseDHCPOption (line 166) | func parseDHCPOption(s string) (code dhcpv4.OptionCode, val dhcpv4.Optio... method prepareOptions (line 199) | func (s *v4Server) prepareOptions() { FILE: internal/dhcpd/options_unix_internal_test.go function TestParseOpt (line 17) | func TestParseOpt(t *testing.T) { function TestPrepareOptions (line 176) | func TestPrepareOptions(t *testing.T) { FILE: internal/dhcpd/routeradv.go type raCtx (line 19) | type raCtx struct method Init (line 228) | func (ra *raCtx) Init() (err error) { method Close (line 301) | func (ra *raCtx) Close() (err error) { type icmpv6RA (line 62) | type icmpv6RA struct function hwAddrToLinkLayerAddr (line 77) | func hwAddrToLinkLayerAddr(hwa net.HardwareAddr) (lla []byte, err error) { function createICMPv6RAPacket (line 125) | func createICMPv6RAPacket(params icmpv6RA) (data []byte, err error) { FILE: internal/dhcpd/routeradv_internal_test.go function TestCreateICMPv6RAPacket (line 13) | func TestCreateICMPv6RAPacket(t *testing.T) { FILE: internal/dhcpd/v46_windows.go type winServer (line 15) | type winServer struct method ResetLeases (line 20) | func (winServer) ResetLeases(_ []*dhcpsvc.Lease) (err error) ... method GetLeases (line 21) | func (winServer) GetLeases(_ GetLeasesFlags) (leases []*dhcpsvc.Lease)... method getLeasesRef (line 22) | func (winServer) getLeasesRef() []*dhcpsvc.Lease ... method AddStaticLease (line 23) | func (winServer) AddStaticLease(_ *dhcpsvc.Lease) (err error) ... method RemoveStaticLease (line 24) | func (winServer) RemoveStaticLease(_ *dhcpsvc.Lease) (err error) ... method UpdateStaticLease (line 25) | func (winServer) UpdateStaticLease(_ *dhcpsvc.Lease) (err error) ... method FindMACbyIP (line 26) | func (winServer) FindMACbyIP(_ netip.Addr) (mac net.HardwareAddr) ... method WriteDiskConfig4 (line 27) | func (winServer) WriteDiskConfig4(_ *V4ServerConf) {} method WriteDiskConfig6 (line 28) | func (winServer) WriteDiskConfig6(_ *V6ServerConf) {} method Start (line 29) | func (winServer) Start(_ context.Context) (err error) ... method Stop (line 30) | func (winServer) Stop() (err error) ... method HostByIP (line 31) | func (winServer) HostByIP(_ netip.Addr) (host string) ... method IPByHost (line 32) | func (winServer) IPByHost(_ string) (ip netip.Addr) ... function v4Create (line 34) | func v4Create(_ *V4ServerConf) (s DHCPServer, err error) { return winSer... function v6Create (line 35) | func v6Create(_ V6ServerConf) (s DHCPServer, err error) { return winSer... FILE: internal/dhcpd/v4_unix.go type v4Server (line 32) | type v4Server struct method enabled (line 62) | func (s *v4Server) enabled() (ok bool) { method WriteDiskConfig4 (line 67) | func (s *v4Server) WriteDiskConfig4(c *V4ServerConf) { method WriteDiskConfig6 (line 74) | func (s *v4Server) WriteDiskConfig6(c *V6ServerConf) { method validHostnameForClient (line 104) | func (s *v4Server) validHostnameForClient(cliHostname string, ip netip... method HostByIP (line 124) | func (s *v4Server) HostByIP(ip netip.Addr) (host string) { method IPByHost (line 136) | func (s *v4Server) IPByHost(host string) (ip netip.Addr) { method ResetLeases (line 148) | func (s *v4Server) ResetLeases(leases []*dhcpsvc.Lease) (err error) { method getLeasesRef (line 180) | func (s *v4Server) getLeasesRef() []*dhcpsvc.Lease { method isBlocklisted (line 187) | func (s *v4Server) isBlocklisted(l *dhcpsvc.Lease) (ok bool) { method GetLeases (line 203) | func (s *v4Server) GetLeases(flags GetLeasesFlags) (leases []*dhcpsvc.... method FindMACbyIP (line 232) | func (s *v4Server) FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr) { method blocklistLease (line 255) | func (s *v4Server) blocklistLease(l *dhcpsvc.Lease) { method rmLeaseByIndex (line 262) | func (s *v4Server) rmLeaseByIndex(i int) { method rmDynamicLease (line 291) | func (s *v4Server) rmDynamicLease(lease *dhcpsvc.Lease) (err error) { method addLease (line 327) | func (s *v4Server) addLease(l *dhcpsvc.Lease) (err error) { method rmLease (line 359) | func (s *v4Server) rmLease(lease *dhcpsvc.Lease) (err error) { method AddStaticLease (line 385) | func (s *v4Server) AddStaticLease(l *dhcpsvc.Lease) (err error) { method UpdateStaticLease (line 442) | func (s *v4Server) UpdateStaticLease(l *dhcpsvc.Lease) (err error) { method validateStaticLease (line 481) | func (s *v4Server) validateStaticLease(l *dhcpsvc.Lease) (err error) { method updateStaticLease (line 518) | func (s *v4Server) updateStaticLease(l *dhcpsvc.Lease) (err error) { method RemoveStaticLease (line 536) | func (s *v4Server) RemoveStaticLease(l *dhcpsvc.Lease) (err error) { method addrAvailable (line 572) | func (s *v4Server) addrAvailable(target net.IP) (avail bool) { method findLease (line 613) | func (s *v4Server) findLease(mac net.HardwareAddr) (l *dhcpsvc.Lease) { method nextIP (line 624) | func (s *v4Server) nextIP() (ip net.IP) { method findExpiredLease (line 640) | func (s *v4Server) findExpiredLease() int { method reserveLease (line 653) | func (s *v4Server) reserveLease(mac net.HardwareAddr) (l *dhcpsvc.Leas... method commitLease (line 686) | func (s *v4Server) commitLease(l *dhcpsvc.Lease, hostname string) { method allocateLease (line 716) | func (s *v4Server) allocateLease(mac net.HardwareAddr) (l *dhcpsvc.Lea... method handleDiscover (line 735) | func (s *v4Server) handleDiscover(req, resp *dhcpv4.DHCPv4) (l *dhcpsv... method checkLease (line 794) | func (s *v4Server) checkLease(mac net.HardwareAddr, ip net.IP) (l *dhc... method handleSelecting (line 826) | func (s *v4Server) handleSelecting( method handleInitReboot (line 864) | func (s *v4Server) handleInitReboot( method handleRenew (line 909) | func (s *v4Server) handleRenew(req *dhcpv4.DHCPv4) (l *dhcpsvc.Lease, ... method handleByRequestType (line 936) | func (s *v4Server) handleByRequestType(req *dhcpv4.DHCPv4) (lease *dhc... method handleRequest (line 960) | func (s *v4Server) handleRequest(req, resp *dhcpv4.DHCPv4) (lease *dhc... method handleDecline (line 1000) | func (s *v4Server) handleDecline(req, resp *dhcpv4.DHCPv4) (err error) { method findLeaseForIP (line 1053) | func (s *v4Server) findLeaseForIP(ip net.IP, mac net.HardwareAddr) (l ... method handleRelease (line 1071) | func (s *v4Server) handleRelease(req, resp *dhcpv4.DHCPv4) (err error) { method handle (line 1190) | func (s *v4Server) handle(req, resp *dhcpv4.DHCPv4) (rCode int) { method updateOptions (line 1229) | func (s *v4Server) updateOptions(req, resp *dhcpv4.DHCPv4) { method packetHandler (line 1262) | func (s *v4Server) packetHandler(conn net.PacketConn, peer net.Addr, r... method Start (line 1303) | func (s *v4Server) Start(ctx context.Context) (err error) { method configureDNSIPAddrs (line 1372) | func (s *v4Server) configureDNSIPAddrs(dnsIPAddrs []net.IP) { method Stop (line 1393) | func (s *v4Server) Stop() (err error) { function normalizeHostname (line 79) | func normalizeHostname(hostname string) (norm string, err error) { constant defaultHwAddrLen (line 252) | defaultHwAddrLen = 6 constant ErrDupHostname (line 319) | ErrDupHostname = errors.Error("hostname is not unique") constant ErrDupIP (line 323) | ErrDupIP = errors.Error("ip address is not unique") constant ErrUnconfigured (line 381) | ErrUnconfigured errors.Error = "server is unconfigured" function OptionFQDN (line 774) | func OptionFQDN(fqdn string) (opt dhcpv4.Option) { type messageHandler (line 1114) | type messageHandler function v4Create (line 1414) | func v4Create(conf *V4ServerConf) (srv *v4Server, err error) { FILE: internal/dhcpd/v4_unix_internal_test.go function defaultV4ServerConf (line 33) | func defaultV4ServerConf() (conf *V4ServerConf) { function defaultSrv (line 47) | func defaultSrv(tb testing.TB) (s DHCPServer) { function TestV4Server_leasing (line 57) | func TestV4Server_leasing(t *testing.T) { function TestV4Server_AddRemove_static (line 205) | func TestV4Server_AddRemove_static(t *testing.T) { function TestV4_AddReplace (line 287) | func TestV4_AddReplace(t *testing.T) { function TestV4Server_handle_optionsPriority (line 333) | func TestV4Server_handle_optionsPriority(t *testing.T) { function TestV4Server_updateOptions (line 404) | func TestV4Server_updateOptions(t *testing.T) { function TestV4StaticLease_Get (line 507) | func TestV4StaticLease_Get(t *testing.T) { function TestV4DynamicLease_Get (line 599) | func TestV4DynamicLease_Get(t *testing.T) { function TestNormalizeHostname (line 698) | func TestNormalizeHostname(t *testing.T) { type fakePacketConn (line 757) | type fakePacketConn struct method WriteTo (line 766) | func (fc *fakePacketConn) WriteTo(p []byte, addr net.Addr) (n int, err... function TestV4Server_FindMACbyIP (line 770) | func TestV4Server_FindMACbyIP(t *testing.T) { function TestV4Server_handleDecline (line 835) | func TestV4Server_handleDecline(t *testing.T) { function TestV4Server_handleRelease (line 877) | func TestV4Server_handleRelease(t *testing.T) { FILE: internal/dhcpd/v6_unix.go constant valueIAID (line 25) | valueIAID = "ADGH" type v6Server (line 30) | type v6Server struct method WriteDiskConfig4 (line 42) | func (s *v6Server) WriteDiskConfig4(c *V4ServerConf) { method WriteDiskConfig6 (line 46) | func (s *v6Server) WriteDiskConfig6(c *V6ServerConf) { method HostByIP (line 64) | func (s *v6Server) HostByIP(ip netip.Addr) (host string) { method IPByHost (line 78) | func (s *v6Server) IPByHost(host string) (ip netip.Addr) { method ResetLeases (line 92) | func (s *v6Server) ResetLeases(leases []*dhcpsvc.Lease) (err error) { method GetLeases (line 116) | func (s *v6Server) GetLeases(flags GetLeasesFlags) (leases []*dhcpsvc.... method getLeasesRef (line 140) | func (s *v6Server) getLeasesRef() []*dhcpsvc.Lease { method FindMACbyIP (line 145) | func (s *v6Server) FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr) { method leaseRemoveSwapByIndex (line 167) | func (s *v6Server) leaseRemoveSwapByIndex(i int) { method rmDynamicLease (line 181) | func (s *v6Server) rmDynamicLease(lease *dhcpsvc.Lease) (err error) { method AddStaticLease (line 211) | func (s *v6Server) AddStaticLease(l *dhcpsvc.Lease) (err error) { method UpdateStaticLease (line 243) | func (s *v6Server) UpdateStaticLease(l *dhcpsvc.Lease) (err error) { method RemoveStaticLease (line 274) | func (s *v6Server) RemoveStaticLease(l *dhcpsvc.Lease) (err error) { method addLease (line 299) | func (s *v6Server) addLease(l *dhcpsvc.Lease) { method rmLease (line 307) | func (s *v6Server) rmLease(lease *dhcpsvc.Lease) (err error) { method findLease (line 325) | func (s *v6Server) findLease(mac net.HardwareAddr) (lease *dhcpsvc.Lea... method findExpiredLease (line 336) | func (s *v6Server) findExpiredLease() int { method findFreeIP (line 347) | func (s *v6Server) findFreeIP() net.IP { method reserveLease (line 363) | func (s *v6Server) reserveLease(mac net.HardwareAddr) *dhcpsvc.Lease { method commitDynamicLease (line 397) | func (s *v6Server) commitDynamicLease(l *dhcpsvc.Lease) { method checkCID (line 407) | func (s *v6Server) checkCID(msg *dhcpv6.Message) error { method checkSID (line 416) | func (s *v6Server) checkSID(msg *dhcpv6.Message) error { method checkIA (line 445) | func (s *v6Server) checkIA(msg *dhcpv6.Message, lease *dhcpsvc.Lease) ... method commitLease (line 471) | func (s *v6Server) commitLease(msg *dhcpv6.Message, lease *dhcpsvc.Lea... method process (line 493) | func (s *v6Server) process(msg *dhcpv6.Message, req, resp dhcpv6.DHCPv... method packetHandler (line 594) | func (s *v6Server) packetHandler(conn net.PacketConn, peer net.Addr, r... method configureDNSIPAddrs (line 661) | func (s *v6Server) configureDNSIPAddrs( method initRA (line 687) | func (s *v6Server) initRA(iface *net.Interface) (err error) { method Start (line 709) | func (s *v6Server) Start(ctx context.Context) (err error) { method Stop (line 772) | func (s *v6Server) Stop() (err error) { function ip6InRange (line 51) | func ip6InRange(start, ip net.IP) bool { function v6Create (line 796) | func v6Create(conf V6ServerConf) (DHCPServer, error) { FILE: internal/dhcpd/v6_unix_internal_test.go function notify6 (line 18) | func notify6(flags uint32) { function TestV6_AddRemove_static (line 21) | func TestV6_AddRemove_static(t *testing.T) { function TestV6_AddReplace (line 64) | func TestV6_AddReplace(t *testing.T) { function TestV6GetLease (line 111) | func TestV6GetLease(t *testing.T) { function TestV6GetDynamicLease (line 206) | func TestV6GetDynamicLease(t *testing.T) { function TestIP6InRange (line 288) | func TestIP6InRange(t *testing.T) { function TestV6_FindMACbyIP (line 315) | func TestV6_FindMACbyIP(t *testing.T) { FILE: internal/dhcpsvc/addresschecker.go type addressChecker (line 6) | type addressChecker interface type noopAddressChecker (line 14) | type noopAddressChecker struct method IsAvailable (line 17) | func (c noopAddressChecker) IsAvailable(ip netip.Addr) (ok bool, err e... FILE: internal/dhcpsvc/bitset.go constant bitsPerWord (line 3) | bitsPerWord = 64 type bitSet (line 6) | type bitSet struct method isSet (line 18) | func (s *bitSet) isSet(n uint64) (ok bool) { method set (line 33) | func (s *bitSet) set(n uint64, ok bool) { function newBitSet (line 11) | func newBitSet() (s *bitSet) { FILE: internal/dhcpsvc/bitset_internal_test.go function TestBitSet (line 11) | func TestBitSet(t *testing.T) { FILE: internal/dhcpsvc/config.go type Config (line 17) | type Config struct method Validate (line 52) | func (conf *Config) Validate() (err error) { type InterfaceConfig (line 94) | type InterfaceConfig struct method Validate (line 106) | func (ic *InterfaceConfig) Validate() (err error) { FILE: internal/dhcpsvc/config_test.go function TestIPv4Config_Validate (line 16) | func TestIPv4Config_Validate(t *testing.T) { function TestIPv6Config_Validate (line 121) | func TestIPv6Config_Validate(t *testing.T) { function TestConfig_Validate (line 171) | func TestConfig_Validate(t *testing.T) { FILE: internal/dhcpsvc/db.go constant dataVersion (line 22) | dataVersion = 1 constant databasePerm (line 25) | databasePerm fs.FileMode = 0o640 type dataLeases (line 28) | type dataLeases struct type dbLease (line 37) | type dbLease struct method compareNames (line 47) | func (dl *dbLease) compareNames(other *dbLease) (res int) { method toInternal (line 72) | func (dl *dbLease) toInternal() (l *Lease, err error) { function toDBLease (line 52) | func toDBLease(l *Lease) (dl *dbLease) { method dbLoad (line 97) | func (idx *leaseIndex) dbLoad( method addDBLeases (line 131) | func (idx *leaseIndex) addDBLeases( method dbStore (line 174) | func (idx *leaseIndex) dbStore(ctx context.Context, logger *slog.Logger)... FILE: internal/dhcpsvc/db_internal_test.go constant DatabasePerm (line 4) | DatabasePerm = databasePerm FILE: internal/dhcpsvc/dhcpsvc.go constant keyInterface (line 16) | keyInterface = "iface" constant keyFamily (line 19) | keyFamily = "family" type Interface (line 28) | type Interface interface type Empty (line 79) | type Empty struct method Start (line 85) | func (Empty) Start(_ context.Context) (err error) { return nil } method Shutdown (line 88) | func (Empty) Shutdown(_ context.Context) (err error) { return nil } method Config (line 91) | func (Empty) Config() (conf *Config) { return nil } method Enabled (line 97) | func (Empty) Enabled() (ok bool) { return false } method HostByIP (line 100) | func (Empty) HostByIP(_ netip.Addr) (host string) { return "" } method MACByIP (line 103) | func (Empty) MACByIP(_ netip.Addr) (mac net.HardwareAddr) { return nil } method IPByHost (line 106) | func (Empty) IPByHost(_ string) (ip netip.Addr) { return netip.Addr{} } method Leases (line 109) | func (Empty) Leases() (leases []*Lease) { return nil } method AddLease (line 112) | func (Empty) AddLease(_ context.Context, _ *Lease) (err error) { retur... method UpdateStaticLease (line 115) | func (Empty) UpdateStaticLease(_ context.Context, _ *Lease) (err error... method RemoveLease (line 118) | func (Empty) RemoveLease(_ context.Context, _ *Lease) (err error) { re... method Reset (line 121) | func (Empty) Reset(_ context.Context) (err error) { return nil } FILE: internal/dhcpsvc/dhcpsvc_test.go constant testLocalTLD (line 29) | testLocalTLD = "local" constant testIfaceName (line 32) | testIfaceName = "iface0" constant testDBLeasesFilename (line 35) | testDBLeasesFilename = "leases.json" constant testTimeout (line 38) | testTimeout = 10 * time.Second constant testLeaseTTL (line 41) | testLeaseTTL = 24 * time.Hour constant testXid (line 44) | testXid = 1 constant testGatewayIPv4Str (line 66) | testGatewayIPv4Str = "192.0.2.1" constant testSubnetMaskV4Str (line 70) | testSubnetMaskV4Str = "255.255.255.0" constant testRangeStartV4Str (line 74) | testRangeStartV4Str = "192.0.2.100" constant testRangeEndV4Str (line 78) | testRangeEndV4Str = "192.0.2.200" constant testIfaceAddrV4Str (line 82) | testIfaceAddrV4Str = "192.0.2.2" constant testAnotherGatewayIPv4Str (line 86) | testAnotherGatewayIPv4Str = "198.51.100.1" constant testAnotherSubnetMaskV4Str (line 90) | testAnotherSubnetMaskV4Str = "255.255.255.0" constant testAnotherRangeStartV4Str (line 94) | testAnotherRangeStartV4Str = "198.51.100.100" constant testAnotherRangeEndV4Str (line 98) | testAnotherRangeEndV4Str = "198.51.100.200" constant testRangeStartV6Str (line 104) | testRangeStartV6Str = "2001:db8::1" constant testAnotherRangeStartV6Str (line 108) | testAnotherRangeStartV6Str = "2001:db9::1" function newTempDB (line 187) | func newTempDB(tb testing.TB) (dst string) { function newTestDHCPServer (line 203) | func newTestDHCPServer(tb testing.TB, conf *dhcpsvc.Config) (srv *dhcpsv... FILE: internal/dhcpsvc/errors.go function newMustErr (line 11) | func newMustErr(valName, must string, val fmt.Stringer) (err error) { FILE: internal/dhcpsvc/handle.go method serveEther4 (line 15) | func (srv *DHCPServer) serveEther4(ctx context.Context, iface *dhcpInter... FILE: internal/dhcpsvc/handler4.go method serveV4 (line 17) | func (srv *DHCPServer) serveV4( method handleDHCPv4 (line 63) | func (iface *dhcpInterfaceV4) handleDHCPv4( method handleRequest (line 92) | func (iface *dhcpInterfaceV4) handleRequest( method handleDiscover (line 144) | func (iface *dhcpInterfaceV4) handleDiscover( method handleSelecting (line 184) | func (iface *dhcpInterfaceV4) handleSelecting( method handleInitReboot (line 236) | func (iface *dhcpInterfaceV4) handleInitReboot( method handleRenew (line 282) | func (iface *dhcpInterfaceV4) handleRenew( method handleDecline (line 323) | func (iface *dhcpInterfaceV4) handleDecline(ctx context.Context, req *la... method handleRelease (line 369) | func (iface *dhcpInterfaceV4) handleRelease(ctx context.Context, req *la... FILE: internal/dhcpsvc/handler4_test.go function TestDHCPServer_ServeEther4_discover (line 28) | func TestDHCPServer_ServeEther4_discover(t *testing.T) { function TestDHCPServer_ServeEther4_discoverExpired (line 129) | func TestDHCPServer_ServeEther4_discoverExpired(t *testing.T) { function TestDHCPServer_ServeEther4_release (line 163) | func TestDHCPServer_ServeEther4_release(t *testing.T) { function TestDHCPServer_ServeEther4_requestSelecting (line 269) | func TestDHCPServer_ServeEther4_requestSelecting(t *testing.T) { function TestDHCPServer_ServeEther4_requestInitReboot (line 385) | func TestDHCPServer_ServeEther4_requestInitReboot(t *testing.T) { function TestDHCPServer_ServeEther4_requestRenew (line 484) | func TestDHCPServer_ServeEther4_requestRenew(t *testing.T) { function TestDHCPServer_ServeEther4_decline (line 593) | func TestDHCPServer_ServeEther4_decline(t *testing.T) { type dhcpRequestConfig (line 708) | type dhcpRequestConfig struct function newDHCPREQUEST (line 729) | func newDHCPREQUEST(tb testing.TB, conf *dhcpRequestConfig) (pkt gopacke... function newDHCPDISCOVER (line 805) | func newDHCPDISCOVER(tb testing.TB, clientHWAddr net.HardwareAddr) (pkt ... function newDHCPRELEASE (line 841) | func newDHCPRELEASE( function newDHCPDECLINE (line 884) | func newDHCPDECLINE( function newTestPacket (line 934) | func newTestPacket( function requireEthernet (line 955) | func requireEthernet( function assertValidOffer (line 972) | func assertValidOffer( function assertValidACK (line 994) | func assertValidACK( function assertValidNAK (line 1019) | func assertValidNAK( function assertNoResponse (line 1049) | func assertNoResponse(tb testing.TB, outCh <-chan []byte, timeout time.D... FILE: internal/dhcpsvc/handler6.go method serveV6 (line 16) | func (srv *DHCPServer) serveV6( method handleDHCPv6 (line 38) | func (srv *DHCPServer) handleDHCPv6( FILE: internal/dhcpsvc/interface.go type macKey (line 19) | type macKey function macToKey (line 24) | func macToKey(mac net.HardwareAddr) (key macKey) { type netInterface (line 40) | type netInterface struct method reset (line 70) | func (iface *netInterface) reset() { method addLease (line 76) | func (iface *netInterface) addLease(l *Lease) (err error) { method updateLease (line 93) | func (iface *netInterface) updateLease(l *Lease) (prev *Lease, err err... method removeLease (line 107) | func (iface *netInterface) removeLease(l *Lease) (err error) { method blockLease (line 125) | func (iface *netInterface) blockLease( method nextIP (line 144) | func (iface *netInterface) nextIP() (ip netip.Addr) { method findExpiredLease (line 160) | func (iface *netInterface) findExpiredLease(now time.Time) (l *Lease) { FILE: internal/dhcpsvc/iprange.go type ipRange (line 17) | type ipRange struct method contains (line 56) | func (r ipRange) contains(ip netip.Addr) (ok bool) { method find (line 70) | func (r ipRange) find(p ipPredicate) (ip netip.Addr) { method offset (line 82) | func (r ipRange) offset(ip netip.Addr) (offset uint64, ok bool) { method String (line 96) | func (r ipRange) String() (s string) { constant maxRangeLen (line 26) | maxRangeLen = math.MaxUint32 function newIPRange (line 30) | func newIPRange(start, end netip.Addr) (r ipRange, err error) { type ipPredicate (line 64) | type ipPredicate FILE: internal/dhcpsvc/iprange_internal_test.go constant testRangeStartV4Str (line 16) | testRangeStartV4Str = "192.0.2.1" constant testRangeEndV4Str (line 20) | testRangeEndV4Str = "192.0.2.5" constant testRangeStartV6Str (line 24) | testRangeStartV6Str = "2001:db8::1" constant testRangeEndV6Str (line 28) | testRangeEndV6Str = "2001:db8::3" constant testRangeEndV6LargeStr (line 32) | testRangeEndV6LargeStr = "2001:db9::4" function TestNewIPRange (line 53) | func TestNewIPRange(t *testing.T) { function TestIPRange_Contains (line 103) | func TestIPRange_Contains(t *testing.T) { function TestIPRange_Find (line 144) | func TestIPRange_Find(t *testing.T) { function TestIPRange_Offset (line 195) | func TestIPRange_Offset(t *testing.T) { FILE: internal/dhcpsvc/lease.go type Lease (line 19) | type Lease struct method Clone (line 38) | func (l *Lease) Clone() (clone *Lease) { method IsBlocked (line 59) | func (l *Lease) IsBlocked() (blocked bool) { method updateExpiry (line 65) | func (l *Lease) updateExpiry(clock timeutil.Clock, ttl time.Duration) { constant EUI48AddrLen (line 53) | EUI48AddrLen = 6 FILE: internal/dhcpsvc/leaseindex.go type leaseIndex (line 17) | type leaseIndex struct method leaseByAddr (line 44) | func (idx *leaseIndex) leaseByAddr(addr netip.Addr) (l *Lease, ok bool) { method leaseByName (line 51) | func (idx *leaseIndex) leaseByName(name string) (l *Lease, ok bool) { method clear (line 60) | func (idx *leaseIndex) clear(ctx context.Context, logger *slog.Logger)... method add (line 76) | func (idx *leaseIndex) add( method remove (line 113) | func (idx *leaseIndex) remove( method update (line 147) | func (idx *leaseIndex) update( method rangeLeases (line 187) | func (idx *leaseIndex) rangeLeases(f func(l *Lease) (cont bool)) { method len (line 196) | func (idx *leaseIndex) len() (l uint) { function newLeaseIndex (line 35) | func newLeaseIndex(dbFilePath string) (idx *leaseIndex) { FILE: internal/dhcpsvc/networkdevice.go type NetworkDeviceConfig (line 15) | type NetworkDeviceConfig struct method Validate (line 23) | func (conf *NetworkDeviceConfig) Validate() (err error) { type NetworkDeviceManager (line 32) | type NetworkDeviceManager interface type EmptyNetworkDeviceManager (line 41) | type EmptyNetworkDeviceManager struct method Open (line 48) | func (EmptyNetworkDeviceManager) Open( type NetworkDevice (line 60) | type NetworkDevice interface type EmptyNetworkDevice (line 77) | type EmptyNetworkDevice struct method ReadPacketData (line 85) | func (EmptyNetworkDevice) ReadPacketData() (data []byte, ci gopacket.C... method Close (line 91) | func (EmptyNetworkDevice) Close() (err error) { method Addresses (line 97) | func (EmptyNetworkDevice) Addresses() (ips []netip.Addr) { method LinkType (line 103) | func (EmptyNetworkDevice) LinkType() (lt layers.LinkType) { method WritePacketData (line 109) | func (EmptyNetworkDevice) WritePacketData(_ []byte) (err error) { type frameData (line 115) | type frameData struct FILE: internal/dhcpsvc/networkdevice_test.go type testNetworkDeviceManager (line 21) | type testNetworkDeviceManager struct method Open (line 33) | func (ndm *testNetworkDeviceManager) Open( type testNetworkDevice (line 44) | type testNetworkDevice struct method ReadPacketData (line 57) | func (nd *testNetworkDevice) ReadPacketData() (data []byte, ci gopacke... method Close (line 62) | func (nd *testNetworkDevice) Close() (err error) { method Addresses (line 68) | func (nd *testNetworkDevice) Addresses() (ips []netip.Addr) { method WritePacketData (line 74) | func (nd *testNetworkDevice) WritePacketData(data []byte) (err error) { method LinkType (line 80) | func (nd *testNetworkDevice) LinkType() (lt layers.LinkType) { function newTestNetworkDeviceManager (line 88) | func newTestNetworkDeviceManager( FILE: internal/dhcpsvc/options4.go method implicitOptions (line 18) | func (c *IPv4Config) implicitOptions() (opts layers.DHCPOptions) { method appendConfOptions (line 36) | func (c *IPv4Config) appendConfOptions(orig layers.DHCPOptions) (res lay... function appendIPPerHostOptions (line 45) | func appendIPPerHostOptions(orig layers.DHCPOptions) (res layers.DHCPOpt... function appendIPPerInterfaceOptions (line 105) | func appendIPPerInterfaceOptions(orig layers.DHCPOptions) (res layers.DH... function appendLinkPerInterfaceOptions (line 163) | func appendLinkPerInterfaceOptions(orig layers.DHCPOptions) (res layers.... function appendTCPPerHostOptions (line 190) | func appendTCPPerHostOptions(orig layers.DHCPOptions) (res layers.DHCPOp... method options (line 221) | func (c *IPv4Config) options(ctx context.Context, l *slog.Logger) (imp, ... function compareV4OptionCodes (line 246) | func compareV4OptionCodes(a, b layers.DHCPOption) (res int) { method updateOptions (line 254) | func (iface *dhcpInterfaceV4) updateOptions(req, resp *layers.DHCPv4) { method appendLeaseTime (line 293) | func (iface *dhcpInterfaceV4) appendLeaseTime(resp *layers.DHCPv4, lease... function msg4Type (line 310) | func msg4Type(msg *layers.DHCPv4) (typ layers.DHCPMsgType, ok bool) { function requestedIPv4 (line 324) | func requestedIPv4(msg *layers.DHCPv4) (ip netip.Addr, ok bool) { function serverID4 (line 335) | func serverID4(msg *layers.DHCPv4) (ip netip.Addr, ok bool) { function hostname4 (line 346) | func hostname4(msg *layers.DHCPv4) (hostname string) { function requestedOptions (line 360) | func requestedOptions(msg *layers.DHCPv4) (opts []layers.DHCPOpt) { FILE: internal/dhcpsvc/options4_internal_test.go constant testIPv4Str (line 16) | testIPv4Str = "192.0.2.1" constant testAnotherIPv4Str (line 20) | testAnotherIPv4Str = "198.51.100.1" constant broadcastIPv4Str (line 24) | broadcastIPv4Str = "255.255.255.255" function TestIPv4Config_Options (line 30) | func TestIPv4Config_Options(t *testing.T) { FILE: internal/dhcpsvc/options4_test.go function newOptHostname (line 13) | func newOptHostname(tb testing.TB, hostname string) (opt layers.DHCPOpti... function newOptLeaseTime (line 20) | func newOptLeaseTime(tb testing.TB, dur time.Duration) (opt layers.DHCPO... function newOptMessageType (line 31) | func newOptMessageType(tb testing.TB, msgType layers.DHCPMsgType) (opt l... function newOptServerID (line 38) | func newOptServerID(tb testing.TB, serverIP netip.Addr) (opt layers.DHCP... FILE: internal/dhcpsvc/server.go type DHCPServer (line 23) | type DHCPServer struct method newInterfaces (line 99) | func (srv *DHCPServer) newInterfaces( method Start (line 142) | func (srv *DHCPServer) Start(ctx context.Context) (err error) { method Shutdown (line 173) | func (srv *DHCPServer) Shutdown(ctx context.Context) (err error) { method Enabled (line 190) | func (srv *DHCPServer) Enabled() (ok bool) { method Leases (line 195) | func (srv *DHCPServer) Leases() (leases []*Lease) { method HostByIP (line 211) | func (srv *DHCPServer) HostByIP(ip netip.Addr) (host string) { method MACByIP (line 223) | func (srv *DHCPServer) MACByIP(ip netip.Addr) (mac net.HardwareAddr) { method IPByHost (line 235) | func (srv *DHCPServer) IPByHost(host string) (ip netip.Addr) { method Reset (line 247) | func (srv *DHCPServer) Reset(ctx context.Context) (err error) { method AddLease (line 271) | func (srv *DHCPServer) AddLease(ctx context.Context, l *Lease) (err er... method UpdateStaticLease (line 304) | func (srv *DHCPServer) UpdateStaticLease(ctx context.Context, l *Lease... method RemoveLease (line 335) | func (srv *DHCPServer) RemoveLease(ctx context.Context, l *Lease) (err... method removeLeaseByAddr (line 369) | func (srv *DHCPServer) removeLeaseByAddr(ctx context.Context, addr net... function New (line 64) | func New(ctx context.Context, conf *Config) (srv *DHCPServer, err error) { function ifaceForAddr (line 407) | func ifaceForAddr( FILE: internal/dhcpsvc/server_test.go function TestDHCPServer_AddLease (line 18) | func TestDHCPServer_AddLease(t *testing.T) { function TestDHCPServer_index (line 128) | func TestDHCPServer_index(t *testing.T) { function TestDHCPServer_UpdateStaticLease (line 181) | func TestDHCPServer_UpdateStaticLease(t *testing.T) { function TestDHCPServer_RemoveLease (line 285) | func TestDHCPServer_RemoveLease(t *testing.T) { function TestDHCPServer_Reset (line 367) | func TestDHCPServer_Reset(t *testing.T) { function TestServer_Leases (line 385) | func TestServer_Leases(t *testing.T) { FILE: internal/dhcpsvc/v4.go type IPv4Config (line 23) | type IPv4Config struct method Validate (line 65) | func (c *IPv4Config) Validate() (err error) { method validateSubnet (line 86) | func (c *IPv4Config) validateSubnet(orig []error) (errs []error) { type dhcpInterfaceV4 (line 130) | type dhcpInterfaceV4 struct method updateLease (line 204) | func (iface *dhcpInterfaceV4) updateLease( method respondOffer (line 213) | func (iface *dhcpInterfaceV4) respondOffer( method respondACK (line 232) | func (iface *dhcpInterfaceV4) respondACK( method respondNAK (line 254) | func (iface *dhcpInterfaceV4) respondNAK( method buildResponse (line 282) | func (iface *dhcpInterfaceV4) buildResponse( method allocateLease (line 341) | func (iface *dhcpInterfaceV4) allocateLease( method reserveLease (line 378) | func (iface *dhcpInterfaceV4) reserveLease( method updateAndRespond (line 425) | func (iface *dhcpInterfaceV4) updateAndRespond( method newDHCPInterfaceV4 (line 164) | func (srv *DHCPServer) newDHCPInterfaceV4( type dhcpInterfacesV4 (line 321) | type dhcpInterfacesV4 method find (line 325) | func (ifaces dhcpInterfacesV4) find(ip netip.Addr) (iface4 *netInterfa... constant IPv4DefaultTTL (line 448) | IPv4DefaultTTL = 64 constant IPProtoVersion (line 452) | IPProtoVersion = 4 constant ServerPortV4 (line 460) | ServerPortV4 layers.UDPPort = 67 constant ClientPortV4 (line 463) | ClientPortV4 layers.UDPPort = 68 function respond4 (line 467) | func respond4(fd *frameData, resp *layers.DHCPv4) (err error) { FILE: internal/dhcpsvc/v6.go type IPv6Config (line 18) | type IPv6Config struct method Validate (line 48) | func (c *IPv6Config) Validate() (err error) { method options (line 159) | func (c *IPv6Config) options(ctx context.Context, l *slog.Logger) (imp... type dhcpInterfaceV6 (line 71) | type dhcpInterfaceV6 struct method newDHCPInterfaceV6 (line 99) | func (srv *DHCPServer) newDHCPInterfaceV6( type dhcpInterfacesV6 (line 130) | type dhcpInterfacesV6 method find (line 134) | func (ifaces dhcpInterfacesV6) find(ip netip.Addr) (iface6 *netInterfa... function compareV6OptionCodes (line 180) | func compareV6OptionCodes(a, b layers.DHCPv6Option) (res int) { FILE: internal/dnsforward/access.go type accessManager (line 22) | type accessManager struct method allowlistMode (line 109) | func (a *accessManager) allowlistMode() (ok bool) { method isBlockedClientID (line 114) | func (a *accessManager) isBlockedClientID(id string) (ok bool) { method isBlockedHost (line 130) | func (a *accessManager) isBlockedHost(host string, qt rules.RRType) (o... method isBlockedIP (line 141) | func (a *accessManager) isBlockedIP(ip netip.Addr) (blocked bool, rule... function processAccessClients (line 39) | func processAccessClients( function newAccessCtx (line 66) | func newAccessCtx(allowed, blocked, blockedHosts []string) (a *accessMan... type accessListJSON (line 169) | type accessListJSON struct method accessListJSON (line 175) | func (s *Server) accessListJSON() (j accessListJSON) { method handleAccessList (line 187) | func (s *Server) handleAccessList(w http.ResponseWriter, r *http.Request) { function validateAccessSet (line 194) | func validateAccessSet(list *accessListJSON) (err error) { function validateStrUniq (line 222) | func validateStrUniq(clients []string) (m *container.MapSet[string], err... method handleAccessSet (line 243) | func (s *Server) handleAccessSet(w http.ResponseWriter, r *http.Request) { FILE: internal/dnsforward/access_internal_test.go function TestIsBlockedClientID (line 13) | func TestIsBlockedClientID(t *testing.T) { function TestIsBlockedHost (line 28) | func TestIsBlockedHost(t *testing.T) { function TestIsBlockedIP (line 112) | func TestIsBlockedIP(t *testing.T) { FILE: internal/dnsforward/clientid.go function clientIDFromClientServerName (line 21) | func clientIDFromClientServerName( function clientIDFromDNSContextHTTPS (line 54) | func clientIDFromDNSContextHTTPS(pctx *proxy.DNSContext) (clientID strin... type tlsConn (line 92) | type tlsConn interface function clientServerName (line 99) | func clientServerName( function clientServerNameFromHTTP (line 138) | func clientServerNameFromHTTP(r *http.Request) (srvName string, fromHost... FILE: internal/dnsforward/clientid_internal_test.go type testTLSConn (line 16) | type testTLSConn struct method ConnectionState (line 25) | func (c testTLSConn) ConnectionState() (cs tls.ConnectionState) { function TestServer_clientIDFromDNSContext (line 31) | func TestServer_clientIDFromDNSContext(t *testing.T) { function newHTTPReq (line 241) | func newHTTPReq(cliSrvName string, inclTLS bool) (r *http.Request) { function TestClientIDFromDNSContextHTTPS (line 262) | func TestClientIDFromDNSContextHTTPS(t *testing.T) { FILE: internal/dnsforward/clientscontainer.go type ClientsContainer (line 11) | type ClientsContainer interface type EmptyClientsContainer (line 26) | type EmptyClientsContainer struct method CustomUpstreamConfig (line 33) | func (EmptyClientsContainer) CustomUpstreamConfig( method UpdateCommonUpstreamConfig (line 42) | func (EmptyClientsContainer) UpdateCommonUpstreamConfig(conf *client.C... method ClearUpstreamCache (line 46) | func (EmptyClientsContainer) ClearUpstreamCache() {} FILE: internal/dnsforward/config.go type Config (line 37) | type Config struct type EDNSClientSubnet (line 174) | type EDNSClientSubnet struct type TLSConfig (line 188) | type TLSConfig struct type DNSCryptConfig (line 220) | type DNSCryptConfig struct type ServerConfig (line 240) | type ServerConfig struct method loadUpstreams (line 525) | func (conf *ServerConfig) loadUpstreams( method collectDNSAddrs (line 566) | func (conf *ServerConfig) collectDNSAddrs() ( method ourAddrsSet (line 650) | func (conf *ServerConfig) ourAddrsSet(ctx context.Context, l *slog.Log... type UpstreamMode (line 316) | type UpstreamMode constant UpstreamModeLoadBalance (line 319) | UpstreamModeLoadBalance UpstreamMode = "load_balance" constant UpstreamModeParallel (line 320) | UpstreamModeParallel UpstreamMode = "parallel" constant UpstreamModeFastestAddr (line 321) | UpstreamModeFastestAddr UpstreamMode = "fastest_addr" method newProxyConfig (line 327) | func (s *Server) newProxyConfig(ctx context.Context) (conf *proxy.Config... function newRatelimitMw (line 409) | func newRatelimitMw( function prepareCacheConfig (line 432) | func prepareCacheConfig( function parseBogusNXDOMAIN (line 459) | func parseBogusNXDOMAIN(confBogusNXDOMAIN []string) (subnets []netip.Pre... method initDefaultSettings (line 475) | func (s *Server) initDefaultSettings() { method prepareIpsetListSettings (line 503) | func (s *Server) prepareIpsetListSettings(ctx context.Context) (ipsets [... function collectListenAddr (line 549) | func collectListenAddr( constant defaultPlainDNSPort (line 585) | defaultPlainDNSPort uint16 = 53 type addrPortSet (line 588) | type addrPortSet interface type emptyAddrPortSet (line 597) | type emptyAddrPortSet struct method Has (line 600) | func (emptyAddrPortSet) Has(_ netip.AddrPort) (ok bool) { return false } type combinedAddrPortSet (line 604) | type combinedAddrPortSet struct method Has (line 614) | func (m *combinedAddrPortSet) Has(addrPort netip.AddrPort) (ok bool) { function filterOutAddrs (line 620) | func filterOutAddrs(upsConf *proxy.UpstreamConfig, set addrPortSet) (err... method prepareDNSCrypt (line 684) | func (s *Server) prepareDNSCrypt(proxyConf *proxy.Config) { method prepareTLS (line 697) | func (s *Server) prepareTLS(ctx context.Context, proxyConf *proxy.Config... function isWildcard (line 748) | func isWildcard(host string) (ok bool) { function matchesDomainWildcard (line 754) | func matchesDomainWildcard(host, pat string) (ok bool) { function anyNameMatches (line 760) | func anyNameMatches(dnsNames []string, sni string) (ok bool) { method onGetCertificate (line 781) | func (s *Server) onGetCertificate(ch *tls.ClientHelloInfo) (*tls.Certifi... method preparePlain (line 798) | func (s *Server) preparePlain(ctx context.Context, proxyConf *proxy.Conf... method UpdatedProtectionStatus (line 823) | func (s *Server) UpdatedProtectionStatus( method enableProtectionAfterPause (line 853) | func (s *Server) enableProtectionAfterPause(ctx context.Context) { function validateCacheTTL (line 872) | func validateCacheTTL(minTTL, maxTTL uint32) (err error) { FILE: internal/dnsforward/config_internal_test.go function TestAnyNameMatches (line 10) | func TestAnyNameMatches(t *testing.T) { FILE: internal/dnsforward/configvalidator.go type upstreamConfigValidator (line 19) | type upstreamConfigValidator struct method check (line 169) | func (cv *upstreamConfigValidator) check(ctx context.Context, l *slog.... method close (line 225) | func (cv *upstreamConfigValidator) close() { method status (line 255) | func (cv *upstreamConfigValidator) status( type upstreamResult (line 41) | type upstreamResult struct type parseResult (line 54) | type parseResult struct function newUpstreamConfigValidator (line 62) | func newUpstreamConfigValidator( function collectErrResults (line 93) | func collectErrResults(ctx context.Context, l *slog.Logger, lines []stri... function insertConfResults (line 136) | func insertConfResults(conf *proxy.UpstreamConfig, results map[string]*u... function insertListResults (line 150) | func insertListResults(ups []upstream.Upstream, results map[string]*upst... function checkSrv (line 214) | func checkSrv(ctx context.Context, l *slog.Logger, res *upstreamResult, ... constant generalTextLabel (line 246) | generalTextLabel = "upstream_dns" constant fallbackTextLabel (line 247) | fallbackTextLabel = "fallback_dns_title" constant privateTextLabel (line 248) | privateTextLabel = "local_ptr_title" function upstreamResultToStatus (line 299) | func upstreamResultToStatus( function parseResultToStatus (line 340) | func parseResultToStatus( type domainSpecificTestError (line 374) | type domainSpecificTestError struct method Error (line 383) | func (err domainSpecificTestError) Error() (msg string) { method Unwrap (line 391) | func (err domainSpecificTestError) Unwrap() (wrapped error) { type healthchecker (line 396) | type healthchecker struct method check (line 409) | func (h *healthchecker) check(u upstream.Upstream) (err error) { FILE: internal/dnsforward/context.go type ctxKey (line 9) | type ctxKey constant ctxKeyClientID (line 13) | ctxKeyClientID ctxKey = iota function contextWithClientID (line 17) | func contextWithClientID(parent context.Context, id string) (ctx context... function clientIDFromContext (line 22) | func clientIDFromContext(ctx context.Context) (id string, ok bool) { FILE: internal/dnsforward/dialcontext.go method DialContext (line 18) | func (s *Server) DialContext(ctx context.Context, network, addr string) ... FILE: internal/dnsforward/dns64.go method setupDNS64 (line 17) | func (s *Server) setupDNS64() { method mapDNS64 (line 38) | func (s *Server) mapDNS64(ip netip.Addr) (mapped net.IP) { FILE: internal/dnsforward/dns64_internal_test.go constant maxDNS64SynTTL (line 25) | maxDNS64SynTTL uint32 = 600 function newRR (line 30) | func newRR(tb testing.TB, name string, qtype uint16, ttl uint32, val any... function TestServer_ServeDNS_dns64 (line 66) | func TestServer_ServeDNS_dns64(t *testing.T) { function TestServer_dns64WithDisabledRDNS (line 323) | func TestServer_dns64WithDisabledRDNS(t *testing.T) { FILE: internal/dnsforward/dnsforward.go constant DefaultTimeout (line 38) | DefaultTimeout = 10 * time.Second constant defaultLocalTimeout (line 43) | defaultLocalTimeout = 1 * time.Second type DHCP (line 64) | type DHCP interface type SystemResolvers (line 81) | type SystemResolvers interface type Server (line 99) | type Server struct method Close (line 279) | func (s *Server) Close(ctx context.Context) { method WriteDiskConfig (line 294) | func (s *Server) WriteDiskConfig(c *Config) { method LocalPTRResolvers (line 311) | func (s *Server) LocalPTRResolvers() (localPTRResolvers []string) { method AddrProcConfig (line 320) | func (s *Server) AddrProcConfig() (c *client.DefaultAddrProcConfig) { method UpstreamTimeout (line 332) | func (s *Server) UpstreamTimeout() (t time.Duration) { method Resolve (line 342) | func (s *Server) Resolve(ctx context.Context, net, host string) (addr ... method Exchange (line 363) | func (s *Server) Exchange( method Start (line 463) | func (s *Server) Start(ctx context.Context) error { method startLocked (line 472) | func (s *Server) startLocked(ctx context.Context) error { method Prepare (line 483) | func (s *Server) Prepare(ctx context.Context, conf *ServerConfig) (err... method prepareUpstreamSettings (line 539) | func (s *Server) prepareUpstreamSettings(ctx context.Context, boot ups... method prepareLocalResolvers (line 602) | func (s *Server) prepareLocalResolvers(ctx context.Context) (uc *proxy... method prepareInternalDNS (line 634) | func (s *Server) prepareInternalDNS(ctx context.Context) (err error) { method setupFallbackDNS (line 679) | func (s *Server) setupFallbackDNS() (uc *proxy.UpstreamConfig, err err... method setupAddrProc (line 703) | func (s *Server) setupAddrProc() { method prepareInternalProxy (line 753) | func (s *Server) prepareInternalProxy() (err error) { method Stop (line 780) | func (s *Server) Stop(ctx context.Context) error { method stopLocked (line 791) | func (s *Server) stopLocked(ctx context.Context) { method IsRunning (line 823) | func (s *Server) IsRunning() bool { method proxy (line 838) | func (s *Server) proxy() (p *proxy.Proxy) { method Reconfigure (line 848) | func (s *Server) Reconfigure(ctx context.Context, conf *ServerConfig) ... method ServeHTTP (line 888) | func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { method IsBlockedClient (line 896) | func (s *Server) IsBlockedClient(ip netip.Addr, clientID string) (bloc... constant defaultLocalDomainSuffix (line 198) | defaultLocalDomainSuffix = "lan" type DNSCreateParams (line 201) | type DNSCreateParams struct function NewServer (line 221) | func NewServer(p DNSCreateParams) (s *Server, err error) { constant ErrRDNSNoData (line 352) | ErrRDNSNoData errors.Error = "no ptr data in response" constant ErrRDNSFailed (line 356) | ErrRDNSFailed errors.Error = "failed to resolve ptr" function hostFromPTR (line 416) | func hostFromPTR( type PrivateRDNSError (line 586) | type PrivateRDNSError struct method Error (line 591) | func (e *PrivateRDNSError) Error() (s string) { method Unwrap (line 595) | func (e *PrivateRDNSError) Unwrap() (err error) { function validateBlockingMode (line 727) | func validateBlockingMode( function logCloserErr (line 811) | func logCloserErr(ctx context.Context, c io.Closer, msg string, l *slog.... constant srvClosedErr (line 832) | srvClosedErr errors.Error = "server is closed" FILE: internal/dnsforward/dnsforward_internal_test.go function TestMain (line 48) | func TestMain(m *testing.M) { constant testTimeout (line 55) | testTimeout = 1 * time.Second constant testQuestionTarget (line 60) | testQuestionTarget = "target.example" constant tlsServerName (line 63) | tlsServerName = "testdns.adguard.com" constant testMessagesCount (line 64) | testMessagesCount = 10 type clientsContainer (line 76) | type clientsContainer struct method CustomUpstreamConfig (line 89) | func (c *clientsContainer) CustomUpstreamConfig( method UpdateCommonUpstreamConfig (line 98) | func (c *clientsContainer) UpdateCommonUpstreamConfig(conf *client.Com... method ClearUpstreamCache (line 104) | func (c *clientsContainer) ClearUpstreamCache() { function startDeferStop (line 111) | func startDeferStop(tb testing.TB, s *Server) { function applyEmptyClientFiltering (line 123) | func applyEmptyClientFiltering(_ string, _ netip.Addr, _ *filtering.Sett... function emptyFilteringBlockedServices (line 127) | func emptyFilteringBlockedServices() (bsvc *filtering.BlockedServices) { function createTestServer (line 136) | func createTestServer( function createServerTLSConfig (line 185) | func createServerTLSConfig(tb testing.TB) (*tls.Config, []byte, []byte) { function createTestTLS (line 237) | func createTestTLS(tb testing.TB, tlsConf *TLSConfig) (s *Server, certPe... constant googleDomainName (line 268) | googleDomainName = "google-public-dns-a.google.com." function createGoogleATestMessage (line 270) | func createGoogleATestMessage() *dns.Msg { function newGoogleUpstream (line 274) | func newGoogleUpstream() (u upstream.Upstream) { function createTestMessage (line 287) | func createTestMessage(host string) *dns.Msg { function createTestMessageWithType (line 301) | func createTestMessageWithType(host string, qtype uint16) *dns.Msg { function newResp (line 310) | func newResp(rcode int, req *dns.Msg, ans []dns.RR) (resp *dns.Msg) { function assertGoogleAResponse (line 319) | func assertGoogleAResponse(tb testing.TB, reply *dns.Msg) { function assertResponse (line 325) | func assertResponse(tb testing.TB, reply *dns.Msg, ip netip.Addr) { function sendTestMessagesAsync (line 343) | func sendTestMessagesAsync(tb testing.TB, conn *dns.Conn) { function sendTestMessages (line 369) | func sendTestMessages(tb testing.TB, conn *dns.Conn) { function TestServer (line 383) | func TestServer(t *testing.T) { function TestServer_timeout (line 427) | func TestServer_timeout(t *testing.T) { function TestServer_Prepare_fallbacks (line 472) | func TestServer_Prepare_fallbacks(t *testing.T) { function TestServerWithProtectionDisabled (line 499) | func TestServerWithProtectionDisabled(t *testing.T) { function TestDoTServer (line 526) | func TestDoTServer(t *testing.T) { function TestDoQServer (line 550) | func TestDoQServer(t *testing.T) { function TestServerRace (line 574) | func TestServerRace(t *testing.T) { function TestSafeSearch (line 607) | func TestSafeSearch(t *testing.T) { function TestInvalidRequest (line 729) | func TestInvalidRequest(t *testing.T) { function TestBlockedRequest (line 763) | func TestBlockedRequest(t *testing.T) { function TestServerCustomClientUpstream (line 797) | func TestServerCustomClientUpstream(t *testing.T) { function TestBlockCNAMEProtectionEnabled (line 880) | func TestBlockCNAMEProtectionEnabled(t *testing.T) { function TestBlockCNAME (line 918) | func TestBlockCNAME(t *testing.T) { function TestClientRulesForCNAMEMatching (line 993) | func TestClientRulesForCNAMEMatching(t *testing.T) { function TestNullBlockedRequest (line 1041) | func TestNullBlockedRequest(t *testing.T) { function TestBlockedCustomIP (line 1095) | func TestBlockedCustomIP(t *testing.T) { function TestBlockedByHosts (line 1181) | func TestBlockedByHosts(t *testing.T) { function TestBlockedBySafeBrowsing (line 1234) | func TestBlockedBySafeBrowsing(t *testing.T) { function TestRewrite (line 1291) | func TestRewrite(t *testing.T) { function publicKey (line 1411) | func publicKey(priv any) any { type testDHCP (line 1425) | type testDHCP struct method HostByIP (line 1435) | func (d *testDHCP) HostByIP(ip netip.Addr) (host string) { return d.On... method IPByHost (line 1438) | func (d *testDHCP) IPByHost(host string) (ip netip.Addr) { return d.On... method Enabled (line 1441) | func (d *testDHCP) Enabled() (ok bool) { return d.OnEnabled() } function TestPTRResponseFromDHCPLeases (line 1443) | func TestPTRResponseFromDHCPLeases(t *testing.T) { function TestPTRResponseFromHosts (line 1501) | func TestPTRResponseFromHosts(t *testing.T) { function TestNewServer (line 1601) | func TestNewServer(t *testing.T) { function doubleTTL (line 1649) | func doubleTTL(msg *dns.Msg) (resp *dns.Msg) { function TestServer_Exchange (line 1671) | func TestServer_Exchange(t *testing.T) { FILE: internal/dnsforward/dnsrewrite.go method filterDNSRewriteResponse (line 17) | func (s *Server) filterDNSRewriteResponse( method ansFromDNSRewriteIP (line 43) | func (s *Server) ansFromDNSRewriteIP( method ansFromDNSRewriteText (line 62) | func (s *Server) ansFromDNSRewriteText( method ansFromDNSRewriteMX (line 81) | func (s *Server) ansFromDNSRewriteMX( method ansFromDNSRewriteSVCB (line 100) | func (s *Server) ansFromDNSRewriteSVCB( method ansFromDNSRewriteSRV (line 124) | func (s *Server) ansFromDNSRewriteSRV( method filterDNSRewrite (line 143) | func (s *Server) filterDNSRewrite( FILE: internal/dnsforward/dnsrewrite_internal_test.go function TestServer_FilterDNSRewrite (line 17) | func TestServer_FilterDNSRewrite(t *testing.T) { FILE: internal/dnsforward/filter.go method clientRequestFilteringSettings (line 17) | func (s *Server) clientRequestFilteringSettings(dctx *dnsContext) (setts... method filterDNSRequest (line 27) | func (s *Server) filterDNSRequest( function isRewrittenCNAME (line 65) | func isRewrittenCNAME(res *filtering.Result) (ok bool) { method checkHostRules (line 76) | func (s *Server) checkHostRules( method filterDNSResponse (line 96) | func (s *Server) filterDNSResponse(ctx context.Context, dctx *dnsContext... function removeIPv6Hints (line 159) | func removeIPv6Hints(rr *dns.HTTPS) { method filterHTTPSRecords (line 170) | func (s *Server) filterHTTPSRecords(rr *dns.HTTPS, setts *filtering.Sett... method filterSVCBHint (line 204) | func (s *Server) filterSVCBHint( FILE: internal/dnsforward/filter_internal_test.go function TestServer_filterDNSResponse (line 18) | func TestServer_filterDNSResponse(t *testing.T) { function newSVCBHintsAnswer (line 182) | func newSVCBHintsAnswer(target string, hints []dns.SVCBKeyValue) (rrs []... FILE: internal/dnsforward/http.go type jsonDNSConfig (line 32) | type jsonDNSConfig struct method checkBlockingMode (line 256) | func (req *jsonDNSConfig) checkBlockingMode() (err error) { method checkUpstreamMode (line 265) | func (req *jsonDNSConfig) checkUpstreamMode() (err error) { method validate (line 286) | func (req *jsonDNSConfig) validate( method checkBootstrap (line 336) | func (req *jsonDNSConfig) checkBootstrap() (err error) { method containsPrivateRDNS (line 365) | func (req *jsonDNSConfig) containsPrivateRDNS() (ok bool) { method checkPrivateRDNS (line 372) | func (req *jsonDNSConfig) checkPrivateRDNS( method validateUpstreamDNSServers (line 405) | func (req *jsonDNSConfig) validateUpstreamDNSServers( method validateCacheSettings (line 449) | func (req *jsonDNSConfig) validateCacheSettings(curCacheSize uint32) (... method validateCacheSize (line 474) | func (req *jsonDNSConfig) validateCacheSize(curCacheSize uint32) (err ... method checkRatelimitSubnetMaskLen (line 496) | func (req *jsonDNSConfig) checkRatelimitSubnetMaskLen() (err error) { method checkUpstreamTimeout (line 512) | func (req *jsonDNSConfig) checkUpstreamTimeout() (err error) { type jsonUpstreamMode (line 131) | type jsonUpstreamMode constant jsonUpstreamModeEmpty (line 138) | jsonUpstreamModeEmpty jsonUpstreamMode = "" constant jsonUpstreamModeLoadBalance (line 140) | jsonUpstreamModeLoadBalance jsonUpstreamMode = "load_balance" constant jsonUpstreamModeParallel (line 141) | jsonUpstreamModeParallel jsonUpstreamMode = "parallel" constant jsonUpstreamModeFastestAddr (line 142) | jsonUpstreamModeFastestAddr jsonUpstreamMode = "fastest_addr" method getDNSConfig (line 145) | func (s *Server) getDNSConfig(ctx context.Context) (c *jsonDNSConfig) { method defaultLocalPTRUpstreams (line 231) | func (s *Server) defaultLocalPTRUpstreams(ctx context.Context) (ups []st... method handleGetConfig (line 248) | func (s *Server) handleGetConfig(w http.ResponseWriter, r *http.Request) { function checkInclusion (line 522) | func checkInclusion(ptr *uint, minN, maxN uint) (err error) { method handleSetConfig (line 539) | func (s *Server) handleSetConfig(w http.ResponseWriter, r *http.Request) { method setConfig (line 588) | func (s *Server) setConfig(dc *jsonDNSConfig) (shouldRestart bool) { function mustParseUpstreamMode (line 620) | func mustParseUpstreamMode(mode jsonUpstreamMode) (um UpstreamMode) { function setIfNotNil (line 636) | func setIfNotNil[T any](currentPtr, newPtr *T) (hasSet bool) { method setConfigRestartable (line 652) | func (s *Server) setConfigRestartable(dc *jsonDNSConfig) (shouldRestart ... type upstreamJSON (line 695) | type upstreamJSON struct function closeBoots (line 704) | func closeBoots(ctx context.Context, l *slog.Logger, boots []*upstream.U... method handleTestUpstreamDNS (line 712) | func (s *Server) handleTestUpstreamDNS(w http.ResponseWriter, r *http.Re... method handleCacheClear (line 765) | func (s *Server) handleCacheClear(w http.ResponseWriter, _ *http.Request) { type protectionJSON (line 773) | type protectionJSON struct method handleSetProtection (line 779) | func (s *Server) handleSetProtection(w http.ResponseWriter, r *http.Requ... method handleDoH (line 832) | func (s *Server) handleDoH(w http.ResponseWriter, r *http.Request) { method registerHandlers (line 858) | func (s *Server) registerHandlers() { FILE: internal/dnsforward/http_internal_test.go type emptySysResolvers (line 40) | type emptySysResolvers struct method Addrs (line 43) | func (emptySysResolvers) Addrs() (addrs []netip.AddrPort) { function loadTestData (line 49) | func loadTestData(tb testing.TB, casesFileName string, cases any) { constant jsonExt (line 62) | jsonExt = ".json" constant testBlockedRespTTL (line 65) | testBlockedRespTTL = 10 function TestDNSForwardHTTP_handleGetConfig (line 68) | func TestDNSForwardHTTP_handleGetConfig(t *testing.T) { function TestDNSForwardHTTP_handleSetConfig (line 154) | func TestDNSForwardHTTP_handleSetConfig(t *testing.T) { function newLocalUpstreamListener (line 324) | func newLocalUpstreamListener(tb testing.TB, port uint16, h dns.Handler)... function TestServer_HandleTestUpstreamDNS (line 345) | func TestServer_HandleTestUpstreamDNS(t *testing.T) { FILE: internal/dnsforward/ipset.go type ipsetHandler (line 18) | type ipsetHandler struct method close (line 61) | func (h *ipsetHandler) close() (err error) { method skipIpsetProcessing (line 81) | func (h *ipsetHandler) skipIpsetProcessing(dctx *dnsContext) (ok bool) { method process (line 124) | func (h *ipsetHandler) process(ctx context.Context, dctx *dnsContext) ... function newIpsetHandler (line 25) | func newIpsetHandler( function dctxIsFilled (line 70) | func dctxIsFilled(dctx *dnsContext) (ok bool) { function ipFromRR (line 92) | func ipFromRR(rr dns.RR) (ip net.IP) { function ipsFromAnswer (line 104) | func ipsFromAnswer(ans []dns.RR) (ip4s, ip6s []net.IP) { FILE: internal/dnsforward/ipset_internal_test.go type fakeIpsetMgr (line 15) | type fakeIpsetMgr struct method Add (line 21) | func (m *fakeIpsetMgr) Add(_ context.Context, host string, ip4s, ip6s ... method Close (line 29) | func (*fakeIpsetMgr) Close() (err error) { function TestIpsetCtx_process (line 33) | func TestIpsetCtx_process(t *testing.T) { function TestIpsetCtx_SkipIpsetProcessing (line 124) | func TestIpsetCtx_SkipIpsetProcessing(t *testing.T) { FILE: internal/dnsforward/middleware.go method Wrap (line 24) | func (s *Server) Wrap(h proxy.Handler) (wrapped proxy.Handler) { method serveBlockedResponse (line 57) | func (s *Server) serveBlockedResponse(pctx *proxy.DNSContext) (err error) { method isBlockedHost (line 70) | func (s *Server) isBlockedHost(ctx context.Context, question []dns.Quest... method clientIDFromDNSContext (line 96) | func (s *Server) clientIDFromDNSContext( type logMiddleware (line 138) | type logMiddleware struct method Wrap (line 163) | func (m *logMiddleware) Wrap(h proxy.Handler) (wrapped proxy.Handler) { method attrsSlicePtr (line 185) | func (m *logMiddleware) attrsSlicePtr(r *dns.Msg) (attrsPtr *[]slog.At... method logFinished (line 208) | func (m *logMiddleware) logFinished(ctx context.Context, l *slog.Logge... constant logMwAttrNum (line 146) | logMwAttrNum = 3 function newLogMiddleware (line 149) | func newLogMiddleware(l *slog.Logger, lvl slog.Level) (mw *logMiddleware) { FILE: internal/dnsforward/middleware_internal_test.go constant blockedHost (line 20) | blockedHost = "blockedhost.org" constant testFQDN (line 21) | testFQDN = "example.org." constant dnsClientTimeout (line 23) | dnsClientTimeout = 200 * time.Millisecond function TestServer_middlewareTLS (line 26) | func TestServer_middlewareTLS(t *testing.T) { function TestServer_middlewareUDP (line 144) | func TestServer_middlewareUDP(t *testing.T) { function newTestDNSAnswer (line 260) | func newTestDNSAnswer(fqdn string, ip net.IP) (ans []dns.RR) { function newTestUpstream (line 274) | func newTestUpstream(tb testing.TB, answer []dns.RR) (addr string) { function newTestTCPClient (line 288) | func newTestTCPClient(clientSrvName string) (c *dns.Client) { function assertSuccessResponse (line 303) | func assertSuccessResponse(tb testing.TB, reply *dns.Msg, expectedAns []... function assertRejectedResponse (line 314) | func assertRejectedResponse(tb testing.TB, reply *dns.Msg, wantRCode int) { function assertTimeoutError (line 324) | func assertTimeoutError(tb testing.TB, err error, reply *dns.Msg) { FILE: internal/dnsforward/msg.go method reply (line 19) | func (*Server) reply(req *dns.Msg, code int) (resp *dns.Msg) { method replyCompressed (line 27) | func (s *Server) replyCompressed(req *dns.Msg) (resp *dns.Msg) { function ipsFromRules (line 36) | func ipsFromRules(resRules []*filtering.ResultRule) (ips []netip.Addr) { method genDNSFilterMessage (line 50) | func (s *Server) genDNSFilterMessage( method getCNAMEWithIPs (line 83) | func (s *Server) getCNAMEWithIPs( method genForBlockingMode (line 122) | func (s *Server) genForBlockingMode( method makeResponseCustomIP (line 151) | func (s *Server) makeResponseCustomIP( method genARecord (line 175) | func (s *Server) genARecord(request *dns.Msg, ip netip.Addr) *dns.Msg { method genAAAARecord (line 181) | func (s *Server) genAAAARecord(request *dns.Msg, ip netip.Addr) *dns.Msg { method hdr (line 187) | func (s *Server) hdr(req *dns.Msg, rrType rules.RRType) (h dns.RR_Header) { method genAnswerA (line 196) | func (s *Server) genAnswerA(req *dns.Msg, ip netip.Addr) (ans *dns.A) { method genAnswerAAAA (line 203) | func (s *Server) genAnswerAAAA(req *dns.Msg, ip netip.Addr) (ans *dns.AA... method genAnswerCNAME (line 210) | func (s *Server) genAnswerCNAME(req *dns.Msg, cname string) (ans *dns.CN... method genAnswerMX (line 217) | func (s *Server) genAnswerMX(req *dns.Msg, mx *rules.DNSMX) (ans *dns.MX) { method genAnswerPTR (line 225) | func (s *Server) genAnswerPTR(req *dns.Msg, ptr string) (ans *dns.PTR) { method genAnswerSRV (line 232) | func (s *Server) genAnswerSRV(req *dns.Msg, srv *rules.DNSSRV) (ans *dns... method genAnswerTXT (line 242) | func (s *Server) genAnswerTXT(req *dns.Msg, strs []string) (ans *dns.TXT) { method genResponseWithIPs (line 253) | func (s *Server) genResponseWithIPs( method genAnswersWithIPv4s (line 281) | func (s *Server) genAnswersWithIPv4s( method makeResponseNullIP (line 301) | func (s *Server) makeResponseNullIP(ctx context.Context, req *dns.Msg) (... method genBlockedHost (line 318) | func (s *Server) genBlockedHost( method makeResponseREFUSED (line 377) | func (s *Server) makeResponseREFUSED(req *dns.Msg) *dns.Msg { method NewMsgNXDOMAIN (line 386) | func (s *Server) NewMsgNXDOMAIN(req *dns.Msg) (resp *dns.Msg) { method NewMsgSERVFAIL (line 395) | func (s *Server) NewMsgSERVFAIL(req *dns.Msg) (resp *dns.Msg) { method NewMsgNOTIMPLEMENTED (line 401) | func (s *Server) NewMsgNOTIMPLEMENTED(req *dns.Msg) (resp *dns.Msg) { method NewMsgNODATA (line 419) | func (s *Server) NewMsgNODATA(req *dns.Msg) (resp *dns.Msg) { method genSOA (line 426) | func (s *Server) genSOA(req *dns.Msg) []dns.RR { FILE: internal/dnsforward/process.go type dnsContext (line 20) | type dnsContext struct type resultCode (line 62) | type resultCode constant resultCodeSuccess (line 67) | resultCodeSuccess resultCode = iota constant resultCodeFinish (line 71) | resultCodeFinish constant resultCodeError (line 75) | resultCodeError constant ddrHostFQDN (line 80) | ddrHostFQDN = "_dns.resolver.arpa." constant mozillaFQDN (line 86) | mozillaFQDN = "use-application-dns.net." constant healthcheckFQDN (line 96) | healthcheckFQDN = "healthcheck.adguardhome.test." method processInitial (line 102) | func (s *Server) processInitial(ctx context.Context, dctx *dnsContext) (... method processClientIP (line 145) | func (s *Server) processClientIP(ctx context.Context, addr netip.Addr) { method processDDRQuery (line 165) | func (s *Server) processDDRQuery(ctx context.Context, dctx *dnsContext) ... method makeDDRResponse (line 191) | func (s *Server) makeDDRResponse(req *dns.Msg) (resp *dns.Msg) { method processDHCPHosts (line 264) | func (s *Server) processDHCPHosts(ctx context.Context, dctx *dnsContext)... method processDHCPAddrs (line 330) | func (s *Server) processDHCPAddrs(ctx context.Context, dctx *dnsContext)... method processFilteringBeforeRequest (line 375) | func (s *Server) processFilteringBeforeRequest( function ipStringFromAddr (line 410) | func ipStringFromAddr(addr net.Addr) (ipStr string) { method processUpstream (line 419) | func (s *Server) processUpstream(ctx context.Context, dctx *dnsContext) ... method setReqAD (line 474) | func (s *Server) setReqAD(req *dns.Msg) (wantsDNSSEC bool) { function hasDO (line 495) | func hasDO(msg *dns.Msg) (do bool) { method setRespAD (line 506) | func (s *Server) setRespAD(pctx *proxy.DNSContext, reqWantsDNSSEC bool) { method dhcpHostFromRequest (line 515) | func (s *Server) dhcpHostFromRequest(q *dns.Question) (reqHost string) { method setCustomUpstream (line 536) | func (s *Server) setCustomUpstream(ctx context.Context, pctx *proxy.DNSC... method processFilteringAfterResponse (line 556) | func (s *Server) processFilteringAfterResponse(ctx context.Context, dctx... method filterAfterResponse (line 589) | func (s *Server) filterAfterResponse(ctx context.Context, dctx *dnsConte... FILE: internal/dnsforward/process_internal_test.go constant ddrTestDomainName (line 23) | ddrTestDomainName = "dns.example.net" constant ddrTestFQDN (line 24) | ddrTestFQDN = ddrTestDomainName + "." function TestServer_ProcessInitial (line 27) | func TestServer_ProcessInitial(t *testing.T) { function TestServer_ProcessFilteringAfterResponse (line 121) | func TestServer_ProcessFilteringAfterResponse(t *testing.T) { function TestServer_ProcessDDRQuery (line 218) | func TestServer_ProcessDDRQuery(t *testing.T) { function createTestDNSFilter (line 379) | func createTestDNSFilter(tb testing.TB) (f *filtering.DNSFilter) { function TestServer_ProcessDHCPHosts_localRestriction (line 391) | func TestServer_ProcessDHCPHosts_localRestriction(t *testing.T) { function TestServer_ProcessDHCPHosts (line 503) | func TestServer_ProcessDHCPHosts(t *testing.T) { function TestServer_ProcessUpstream_localPTR (line 643) | func TestServer_ProcessUpstream_localPTR(t *testing.T) { function TestIPStringFromAddr (line 725) | func TestIPStringFromAddr(t *testing.T) { FILE: internal/dnsforward/requesthandler.go method ServeDNS (line 17) | func (s *Server) ServeDNS(ctx context.Context, _ *proxy.Proxy, pctx *pro... FILE: internal/dnsforward/requesthandler_internal_test.go function TestServer_ServeDNS (line 20) | func TestServer_ServeDNS(t *testing.T) { function TestServer_ServeDNS_restrictLocal (line 216) | func TestServer_ServeDNS_restrictLocal(t *testing.T) { FILE: internal/dnsforward/stats.go method processQueryLogsAndStats (line 17) | func (s *Server) processQueryLogsAndStats(ctx context.Context, dctx *dns... method shouldLog (line 78) | func (s *Server) shouldLog(host string, qt, cl uint16, ids []string) (ok... method shouldCountStat (line 90) | func (s *Server) shouldCountStat(host string, qt, cl uint16, ids []strin... method logQuery (line 97) | func (s *Server) logQuery(dctx *dnsContext, ip net.IP, processingTime ti... method updateStats (line 141) | func (s *Server) updateStats(dctx *dnsContext, clientIP string, processi... FILE: internal/dnsforward/stats_internal_test.go type testQueryLog (line 21) | type testQueryLog struct method Add (line 30) | func (l *testQueryLog) Add(p *querylog.AddParams) { method ShouldLog (line 35) | func (l *testQueryLog) ShouldLog(string, uint16, uint16, []string) bool { type testStats (line 40) | type testStats struct method Update (line 49) | func (l *testStats) Update(e *stats.Entry) { method ShouldCount (line 58) | func (l *testStats) ShouldCount(string, uint16, uint16, []string) bool { function TestServer_ProcessQueryLogsAndStats (line 62) | func TestServer_ProcessQueryLogsAndStats(t *testing.T) { FILE: internal/dnsforward/svcbmsg.go method genAnswerHTTPS (line 19) | func (s *Server) genAnswerHTTPS(ctx context.Context, req *dns.Msg, svcb ... type svcbKeyHandler (line 50) | type svcbKeyHandler method genAnswerSVCB (line 173) | func (s *Server) genAnswerSVCB( FILE: internal/dnsforward/svcbmsg_internal_test.go function TestGenAnswerHTTPS_andSVCB (line 14) | func TestGenAnswerHTTPS_andSVCB(t *testing.T) { FILE: internal/dnsforward/upstreams.go function newBootstrap (line 27) | func newBootstrap( function newUpstreamConfig (line 60) | func newUpstreamConfig( function newPrivateConfig (line 97) | func newPrivateConfig( function setProxyUpstreamMode (line 143) | func setProxyUpstreamMode( FILE: internal/dnsforward/upstreams_internal_test.go function TestUpstreamConfigValidator (line 17) | func TestUpstreamConfigValidator(t *testing.T) { function TestUpstreamConfigValidator_Check_once (line 163) | func TestUpstreamConfigValidator_Check_once(t *testing.T) { FILE: internal/filtering/blocked.go function initBlockedServices (line 29) | func initBlockedServices(ctx context.Context, l *slog.Logger) { type BlockedServices (line 66) | type BlockedServices struct method Clone (line 75) | func (s *BlockedServices) Clone() (c *BlockedServices) { method FilterUnknownIDs (line 88) | func (s *BlockedServices) FilterUnknownIDs(ctx context.Context, logger... method Validate (line 108) | func (s *BlockedServices) Validate() (err error) { method ApplyBlockedServices (line 125) | func (d *DNSFilter) ApplyBlockedServices(setts *Settings) { method ApplyBlockedServicesList (line 140) | func (d *DNSFilter) ApplyBlockedServicesList(setts *Settings, list []str... method handleBlockedServicesIDs (line 156) | func (d *DNSFilter) handleBlockedServicesIDs(w http.ResponseWriter, r *h... method handleBlockedServicesAll (line 160) | func (d *DNSFilter) handleBlockedServicesAll(w http.ResponseWriter, r *h... method handleBlockedServicesList (line 174) | func (d *DNSFilter) handleBlockedServicesList(w http.ResponseWriter, r *... method handleBlockedServicesSet (line 190) | func (d *DNSFilter) handleBlockedServicesSet(w http.ResponseWriter, r *h... method handleBlockedServicesGet (line 214) | func (d *DNSFilter) handleBlockedServicesGet(w http.ResponseWriter, r *h... method handleBlockedServicesUpdate (line 228) | func (d *DNSFilter) handleBlockedServicesUpdate(w http.ResponseWriter, r... FILE: internal/filtering/dnsrewrite.go type DNSRewriteResult (line 10) | type DNSRewriteResult struct type DNSRewriteResultResponse (line 17) | type DNSRewriteResultResponse method processDNSRewrites (line 22) | func (d *DNSFilter) processDNSRewrites(dnsr []*rules.NetworkRule) (res R... method processDNSResultRewrites (line 75) | func (d *DNSFilter) processDNSResultRewrites( FILE: internal/filtering/dnsrewrite_test.go function TestDNSFilter_CheckHostRules_dnsrewrite (line 15) | func TestDNSFilter_CheckHostRules_dnsrewrite(t *testing.T) { FILE: internal/filtering/filter.go constant filterDir (line 27) | filterDir = "filters" type FilterYAML (line 32) | type FilterYAML struct method unload (line 45) | func (filter *FilterYAML) unload() { method Path (line 51) | func (filter *FilterYAML) Path(dataDir string) string { method ensureName (line 61) | func (filter *FilterYAML) ensureName(title string) { constant errFilterNotExist (line 80) | errFilterNotExist errors.Error = "url doesn't exist" constant errFilterExists (line 86) | errFilterExists errors.Error = "url already exists" method filterSetProperties (line 92) | func (d *DNSFilter) filterSetProperties( method filterExists (line 169) | func (d *DNSFilter) filterExists(url string) (ok bool) { method filterExistsLocked (line 180) | func (d *DNSFilter) filterExistsLocked(url string) (ok bool) { method filterAdd (line 198) | func (d *DNSFilter) filterAdd(flt FilterYAML) (err error) { method loadFilters (line 221) | func (d *DNSFilter) loadFilters(ctx context.Context, array []FilterYAML) { function deduplicateFilters (line 243) | func deduplicateFilters(filters []FilterYAML) (deduplicated []FilterYAML) { method tryRefreshFilters (line 263) | func (d *DNSFilter) tryRefreshFilters(block, allow, force bool) (updated... method listsToUpdate (line 275) | func (d *DNSFilter) listsToUpdate(filters *[]FilterYAML, force bool) (to... method refreshFiltersArray (line 311) | func (d *DNSFilter) refreshFiltersArray( method updateFilterList (line 337) | func (d *DNSFilter) updateFilterList( method syncUpdatedFilters (line 357) | func (d *DNSFilter) syncUpdatedFilters( method refreshFiltersIntl (line 414) | func (d *DNSFilter) refreshFiltersIntl(block, allow, force bool) (int, b... function removeOldFilterFile (line 463) | func removeOldFilterFile(ctx context.Context, l *slog.Logger, fltPath st... method update (line 478) | func (d *DNSFilter) update(filter *FilterYAML) (b bool, err error) { method updateIntl (line 499) | func (d *DNSFilter) updateIntl(ctx context.Context, flt *FilterYAML) (ok... method finalizeUpdate (line 529) | func (d *DNSFilter) finalizeUpdate( method reader (line 571) | func (d *DNSFilter) reader(fltURL string) (r io.ReadCloser, err error) { method readerFromURL (line 596) | func (d *DNSFilter) readerFromURL(fltURL string) (r io.ReadCloser, err e... method load (line 611) | func (d *DNSFilter) load(ctx context.Context, flt *FilterYAML) (err erro... method EnableFilters (line 649) | func (d *DNSFilter) EnableFilters(async bool) { method enableFiltersLocked (line 657) | func (d *DNSFilter) enableFiltersLocked(ctx context.Context, async bool) { method ApplyAdditionalFiltering (line 697) | func (d *DNSFilter) ApplyAdditionalFiltering(cliAddr netip.Addr, clientI... FILE: internal/filtering/filter_internal_test.go function serveHTTPLocally (line 20) | func serveHTTPLocally(tb testing.TB, h http.Handler) (urlStr string) { function serveFiltersLocally (line 39) | func serveFiltersLocally(tb testing.TB, fltContent []byte) (urlStr strin... function updateAndAssert (line 53) | func updateAndAssert( function newDNSFilter (line 80) | func newDNSFilter(tb testing.TB) (d *DNSFilter) { function TestDNSFilter_Update (line 95) | func TestDNSFilter_Update(t *testing.T) { function TestFilterYAML_EnsureName (line 139) | func TestFilterYAML_EnsureName(t *testing.T) { FILE: internal/filtering/filtering.go type ServiceEntry (line 39) | type ServiceEntry struct type Settings (line 47) | type Settings struct type Resolver (line 69) | type Resolver interface type Config (line 74) | type Config struct type BlockingMode (line 192) | type BlockingMode constant BlockingModeCustomIP (line 197) | BlockingModeCustomIP BlockingMode = "custom_ip" constant BlockingModeDefault (line 202) | BlockingModeDefault BlockingMode = "default" constant BlockingModeNullIP (line 206) | BlockingModeNullIP BlockingMode = "null_ip" constant BlockingModeNXDOMAIN (line 209) | BlockingModeNXDOMAIN BlockingMode = "nxdomain" constant BlockingModeREFUSED (line 212) | BlockingModeREFUSED BlockingMode = "refused" type LookupStats (line 216) | type LookupStats struct type Stats (line 224) | type Stats struct type filtersInitializerParams (line 231) | type filtersInitializerParams struct type hostChecker (line 236) | type hostChecker struct type Checker (line 242) | type Checker interface type DNSFilter (line 248) | type DNSFilter struct method SetEnabled (line 314) | func (d *DNSFilter) SetEnabled(enabled bool) { method Settings (line 319) | func (d *DNSFilter) Settings() (s *Settings) { method WriteDiskConfig (line 332) | func (d *DNSFilter) WriteDiskConfig(c *Config) { method setFilters (line 354) | func (d *DNSFilter) setFilters( method Close (line 389) | func (d *DNSFilter) Close() { method reset (line 400) | func (d *DNSFilter) reset(ctx context.Context) { method ProtectionStatus (line 416) | func (d *DNSFilter) ProtectionStatus() (status bool, disabledUntil *ti... method SetProtectionStatus (line 425) | func (d *DNSFilter) SetProtectionStatus(status bool, disabledUntil *ti... method SetProtectionEnabled (line 434) | func (d *DNSFilter) SetProtectionEnabled(status bool) { method SetBlockingMode (line 442) | func (d *DNSFilter) SetBlockingMode(mode BlockingMode, bIPv4, bIPv6 ne... method BlockingMode (line 454) | func (d *DNSFilter) BlockingMode() (mode BlockingMode, bIPv4, bIPv6 ne... method SetBlockedResponseTTL (line 462) | func (d *DNSFilter) SetBlockedResponseTTL(ttl uint32) { method BlockedResponseTTL (line 470) | func (d *DNSFilter) BlockedResponseTTL() (ttl uint32) { method SafeBrowsingBlockHost (line 478) | func (d *DNSFilter) SafeBrowsingBlockHost() (host string) { method ParentalBlockHost (line 483) | func (d *DNSFilter) ParentalBlockHost() (host string) { method CheckHostRules (line 494) | func (d *DNSFilter) CheckHostRules(host string, rrtype uint16, setts *... method CheckHost (line 500) | func (d *DNSFilter) CheckHost( method processRewrites (line 543) | func (d *DNSFilter) processRewrites(host string, qtype uint16) (res Re... method handleRewriteLoop (line 565) | func (d *DNSFilter) handleRewriteLoop( method matchBlockedServicesRules (line 618) | func (d *DNSFilter) matchBlockedServicesRules( method initFiltering (line 741) | func (d *DNSFilter) initFiltering(ctx context.Context, allowFilters, b... method matchHostProcessAllowList (line 790) | func (d *DNSFilter) matchHostProcessAllowList( method matchHostProcessDNSResult (line 819) | func (d *DNSFilter) matchHostProcessDNSResult( method matchHost (line 879) | func (d *DNSFilter) matchHost( method validateSafeFSPatterns (line 1057) | func (d *DNSFilter) validateSafeFSPatterns(patterns []string) (err err... method Start (line 1072) | func (d *DNSFilter) Start() { method updatesLoop (line 1082) | func (d *DNSFilter) updatesLoop(ctx context.Context) { method periodicallyRefreshFilters (line 1110) | func (d *DNSFilter) periodicallyRefreshFilters(ivl time.Duration) (nex... method checkSafeBrowsing (line 1133) | func (d *DNSFilter) checkSafeBrowsing( method checkParental (line 1169) | func (d *DNSFilter) checkParental( type Filter (line 302) | type Filter struct method Matched (line 489) | func (r Reason) Matched() bool { function newRuleStorage (line 668) | func newRuleStorage(filters []Filter) (rs *filterlist.RuleStorage, err e... function ruleListFromFilter (line 695) | func ruleListFromFilter(f Filter) (rl filterlist.Interface, skip bool, e... function hostRulesToRules (line 776) | func hostRulesToRules(netRules []*rules.HostRule) (res []rules.Rule) { function resultFromHostRules (line 841) | func resultFromHostRules(qtype uint16, dnsres *urlfilter.DNSResult) (res... function hostResultForOtherQType (line 865) | func hostResultForOtherQType(dnsres *urlfilter.DNSResult) (res Result) { function makeResult (line 947) | func makeResult(matchedRules []rules.Rule, reason Reason) (res Result) { function InitModule (line 961) | func InitModule(ctx context.Context, l *slog.Logger) { function New (line 967) | func New(c *Config, blockFilters []Filter) (d *DNSFilter, err error) { FILE: internal/filtering/filtering_internal_test.go constant testTimeout (line 23) | testTimeout = 1 * time.Second constant sbBlocked (line 26) | sbBlocked = "wmconvirus.narod.ru" constant pcBlocked (line 27) | pcBlocked = "pornhub.com" function newForTest (line 35) | func newForTest(t testing.TB, c *Config, filters []Filter) (f *DNSFilter... function newChecker (line 62) | func newChecker(host string) Checker { method checkMatch (line 71) | func (d *DNSFilter) checkMatch(tb testing.TB, hostname string, setts *Se... method checkMatchIP (line 80) | func (d *DNSFilter) checkMatchIP(tb testing.TB, hostname, ip string, qty... method checkMatchEmpty (line 95) | func (d *DNSFilter) checkMatchEmpty(tb testing.TB, hostname string, sett... function TestDNSFilter_CheckHost_hostRules (line 104) | func TestDNSFilter_CheckHost_hostRules(t *testing.T) { function TestSafeBrowsing (line 178) | func TestSafeBrowsing(t *testing.T) { function TestParallelSB (line 207) | func TestParallelSB(t *testing.T) { function TestParentalControl (line 229) | func TestParentalControl(t *testing.T) { function TestMatching (line 259) | func TestMatching(t *testing.T) { function TestWhitelist (line 551) | func TestWhitelist(t *testing.T) { function applyClientSettings (line 598) | func applyClientSettings(setts *Settings) { function TestClientSettings (line 610) | func TestClientSettings(t *testing.T) { function BenchmarkSafeBrowsing (line 681) | func BenchmarkSafeBrowsing(b *testing.B) { function BenchmarkSafeBrowsing_parallel (line 708) | func BenchmarkSafeBrowsing_parallel(b *testing.B) { FILE: internal/filtering/filtering_test.go constant testTimeout (line 10) | testTimeout = 1 * time.Second FILE: internal/filtering/hashprefix/cache.go constant expirySize (line 10) | expirySize = 8 type cacheItem (line 13) | type cacheItem struct function toCacheItem (line 23) | func toCacheItem(data []byte) *cacheItem { function fromCacheItem (line 44) | func fromCacheItem(item *cacheItem) (data []byte) { method findInCache (line 60) | func (c *Checker) findInCache( method storeInCache (line 96) | func (c *Checker) storeInCache(ctx context.Context, hashesToRequest, res... method setCache (line 122) | func (c *Checker) setCache(ctx context.Context, pref prefix, hashes []ho... FILE: internal/filtering/hashprefix/cache_internal_test.go function TestCacheItem (line 10) | func TestCacheItem(t *testing.T) { FILE: internal/filtering/hashprefix/hashprefix.go constant prefixLen (line 25) | prefixLen = 2 constant hashSize (line 28) | hashSize = sha256.Size constant hexSize (line 31) | hexSize = hashSize * 2 type prefix (line 36) | type prefix type hostnameHash (line 41) | type hostnameHash function findMatch (line 44) | func findMatch(a, b []hostnameHash) (matched bool) { type Config (line 56) | type Config struct type Checker (line 74) | type Checker struct method Check (line 106) | func (c *Checker) Check(host string) (ok bool, err error) { method getQuestion (line 179) | func (c *Checker) getQuestion(hashes []hostnameHash) (q string) { method processAnswer (line 193) | func (c *Checker) processAnswer( method appendHashesFromTXT (line 225) | func (c *Checker) appendHashesFromTXT( function New (line 92) | func New(conf *Config) (c *Checker) { function hostnameToHashes (line 139) | func hostnameToHashes(host string) (hashes []hostnameHash) { FILE: internal/filtering/hashprefix/hashprefix_internal_test.go constant cacheTime (line 21) | cacheTime = 10 * time.Minute constant cacheSize (line 22) | cacheSize = 10000 function TestChcker_getQuestion (line 28) | func TestChcker_getQuestion(t *testing.T) { function TestHostnameToHashes (line 63) | func TestHostnameToHashes(t *testing.T) { function TestChecker_storeInCache (line 102) | func TestChecker_storeInCache(t *testing.T) { function TestChecker_Check (line 179) | func TestChecker_Check(t *testing.T) { FILE: internal/filtering/hosts.go method matchSysHosts (line 18) | func (d *DNSFilter) matchSysHosts( method hostsRewrites (line 46) | func (d *DNSFilter) hostsRewrites( FILE: internal/filtering/hosts_test.go function TestDNSFilter_CheckHost_hostsContainer (line 21) | func TestDNSFilter_CheckHost_hostsContainer(t *testing.T) { FILE: internal/filtering/http.go method validateFilterURL (line 26) | func (d *DNSFilter) validateFilterURL(urlStr string) (err error) { type filterAddJSON (line 59) | type filterAddJSON struct method handleFilteringAddURL (line 65) | func (d *DNSFilter) handleFilteringAddURL(w http.ResponseWriter, r *http... method handleFilteringRemoveURL (line 186) | func (d *DNSFilter) handleFilteringRemoveURL(w http.ResponseWriter, r *h... type filterURLReqData (line 277) | type filterURLReqData struct type filterURLReq (line 283) | type filterURLReq struct method handleFilteringSetURL (line 289) | func (d *DNSFilter) handleFilteringSetURL(w http.ResponseWriter, r *http... type filteringRulesReq (line 342) | type filteringRulesReq struct method handleFilteringSetRules (line 346) | func (d *DNSFilter) handleFilteringSetRules(w http.ResponseWriter, r *ht... method handleFilteringRefresh (line 366) | func (d *DNSFilter) handleFilteringRefresh(w http.ResponseWriter, r *htt... type filterJSON (line 404) | type filterJSON struct type filteringConfig (line 415) | type filteringConfig struct function filterToJSON (line 423) | func filterToJSON(f FilterYAML) filterJSON { method handleFilteringStatus (line 442) | func (d *DNSFilter) handleFilteringStatus(w http.ResponseWriter, r *http... method handleFilteringConfig (line 462) | func (d *DNSFilter) handleFilteringConfig(w http.ResponseWriter, r *http... type checkHostRespRule (line 492) | type checkHostRespRule struct type checkHostResp (line 498) | type checkHostResp struct method handleCheckHost (line 523) | func (d *DNSFilter) handleCheckHost(w http.ResponseWriter, r *http.Reque... function stringToDNSType (line 615) | func stringToDNSType(str string) (qtype uint16, err error) { function setProtectedBool (line 644) | func setProtectedBool(mu *sync.RWMutex, ptr *bool, val bool) { function protectedBool (line 655) | func protectedBool(mu *sync.RWMutex, ptr *bool) (val bool) { method handleSafeBrowsingEnable (line 664) | func (d *DNSFilter) handleSafeBrowsingEnable(w http.ResponseWriter, r *h... method handleSafeBrowsingDisable (line 671) | func (d *DNSFilter) handleSafeBrowsingDisable(w http.ResponseWriter, r *... method handleSafeBrowsingStatus (line 678) | func (d *DNSFilter) handleSafeBrowsingStatus(w http.ResponseWriter, r *h... method handleParentalEnable (line 690) | func (d *DNSFilter) handleParentalEnable(w http.ResponseWriter, r *http.... method handleParentalDisable (line 697) | func (d *DNSFilter) handleParentalDisable(w http.ResponseWriter, r *http... method handleParentalStatus (line 704) | func (d *DNSFilter) handleParentalStatus(w http.ResponseWriter, r *http.... method RegisterFilteringHandlers (line 715) | func (d *DNSFilter) RegisterFilteringHandlers() { function ValidateUpdateIvl (line 759) | func ValidateUpdateIvl(i uint32) bool { FILE: internal/filtering/http_internal_test.go function TestDNSFilter_handleFilteringSetURL (line 23) | func TestDNSFilter_handleFilteringSetURL(t *testing.T) { function TestDNSFilter_handleSafeBrowsingStatus (line 154) | func TestDNSFilter_handleSafeBrowsingStatus(t *testing.T) { function TestDNSFilter_handleParentalStatus (line 243) | func TestDNSFilter_handleParentalStatus(t *testing.T) { function TestDNSFilter_HandleCheckHost (line 332) | func TestDNSFilter_HandleCheckHost(t *testing.T) { FILE: internal/filtering/idgenerator.go type idGenerator (line 18) | type idGenerator struct method next (line 37) | func (g *idGenerator) next() (id rules.ListID) { method fix (line 47) | func (g *idGenerator) fix(flts []FilterYAML) { function newIDGenerator (line 25) | func newIDGenerator(seed uint64, l *slog.Logger) (g *idGenerator) { FILE: internal/filtering/idgenerator_internal_test.go function TestIDGenerator_Fix (line 11) | func TestIDGenerator_Fix(t *testing.T) { function assertUniqueIDs (line 77) | func assertUniqueIDs(tb testing.TB, flts []FilterYAML) { FILE: internal/filtering/path.go function pathMatchesAny (line 13) | func pathMatchesAny(globs []string, filePath string) (ok bool) { FILE: internal/filtering/path_unix_internal_test.go function TestPathInAnyDir (line 12) | func TestPathInAnyDir(t *testing.T) { FILE: internal/filtering/path_windows_internal_test.go function TestPathInAnyDir (line 12) | func TestPathInAnyDir(t *testing.T) { FILE: internal/filtering/result.go type Result (line 17) | type Result struct type ResultRule (line 46) | type ResultRule struct function NewResultRule (line 60) | func NewResultRule(r rules.Rule) (rr *ResultRule) { type Reason (line 70) | type Reason method String (line 143) | func (r Reason) String() (s string) { method In (line 152) | func (r Reason) In(reasons ...Reason) (ok bool) { return slices.Contai... constant NotFilteredNotFound (line 75) | NotFilteredNotFound Reason = iota constant NotFilteredAllowList (line 78) | NotFilteredAllowList constant NotFilteredError (line 82) | NotFilteredError constant FilteredBlockList (line 85) | FilteredBlockList constant FilteredSafeBrowsing (line 88) | FilteredSafeBrowsing constant FilteredParental (line 92) | FilteredParental constant FilteredInvalid (line 95) | FilteredInvalid constant FilteredSafeSearch (line 98) | FilteredSafeSearch constant FilteredBlockedService (line 102) | FilteredBlockedService constant Rewritten (line 106) | Rewritten constant RewrittenAutoHosts (line 109) | RewrittenAutoHosts constant RewrittenRule (line 117) | RewrittenRule FILE: internal/filtering/rewrite/item.go type Item (line 14) | type Item struct method equal (line 24) | func (rw *Item) equal(other *Item) (ok bool) { method toRule (line 35) | func (rw *Item) toRule() (res string) { method rewriteParams (line 52) | func (rw *Item) rewriteParams() (dType uint16, exception bool) { FILE: internal/filtering/rewrite/item_internal_test.go function TestItem_equal (line 9) | func TestItem_equal(t *testing.T) { function TestItem_toRule (line 63) | func TestItem_toRule(t *testing.T) { FILE: internal/filtering/rewrite/storage.go type Storage (line 20) | type Storage interface type Config (line 35) | type Config struct type DefaultStorage (line 47) | type DefaultStorage struct method MatchRequest (line 91) | func (s *DefaultStorage) MatchRequest(dReq *urlfilter.DNSRequest) (rws... method resolveCNAMEChain (line 117) | func (s *DefaultStorage) resolveCNAMEChain( method collectDNSRewrites (line 177) | func (s *DefaultStorage) collectDNSRewrites( method rewriteRulesForReq (line 192) | func (s *DefaultStorage) rewriteRulesForReq(dReq *urlfilter.DNSRequest... method Add (line 199) | func (s *DefaultStorage) Add(item *Item) (err error) { method Remove (line 210) | func (s *DefaultStorage) Remove(item *Item) (err error) { method List (line 234) | func (s *DefaultStorage) List() (items []*Item) { method resetRules (line 242) | func (s *DefaultStorage) resetRules() (err error) { function NewDefaultStorage (line 68) | func NewDefaultStorage(conf *Config) (s *DefaultStorage, err error) { function isSelfMatchingWildcard (line 172) | func isSelfMatchingWildcard(host, rwAns, ruleText string) (ok bool) { function matchesQType (line 274) | func matchesQType(dnsrr *rules.DNSRewrite, qt uint16) (ok bool) { function isWildcard (line 289) | func isWildcard(pat string) (res bool) { FILE: internal/filtering/rewrite/storage_internal_test.go constant testListID (line 17) | testListID rules.ListID = 1 function TestNewDefaultStorage (line 22) | func TestNewDefaultStorage(t *testing.T) { function TestDefaultStorage_CRUD (line 38) | func TestDefaultStorage_CRUD(t *testing.T) { function TestDefaultStorage_MatchRequest (line 63) | func TestDefaultStorage_MatchRequest(t *testing.T) { function TestDefaultStorage_MatchRequest_Levels (line 287) | func TestDefaultStorage_MatchRequest_Levels(t *testing.T) { function TestDefaultStorage_MatchRequest_ExceptionCNAME (line 363) | func TestDefaultStorage_MatchRequest_ExceptionCNAME(t *testing.T) { function TestDefaultStorage_MatchRequest_ExceptionIP (line 425) | func TestDefaultStorage_MatchRequest_ExceptionIP(t *testing.T) { FILE: internal/filtering/rewritehttp.go type rewriteEntryJSON (line 15) | type rewriteEntryJSON struct type rewriteSettings (line 22) | type rewriteSettings struct method handleRewriteList (line 31) | func (d *DNSFilter) handleRewriteList(w http.ResponseWriter, r *http.Req... method handleRewriteAdd (line 52) | func (d *DNSFilter) handleRewriteAdd(w http.ResponseWriter, r *http.Requ... method handleRewriteDelete (line 103) | func (d *DNSFilter) handleRewriteDelete(w http.ResponseWriter, r *http.R... type rewriteUpdateJSON (line 145) | type rewriteUpdateJSON struct method handleRewriteUpdate (line 152) | func (d *DNSFilter) handleRewriteUpdate(w http.ResponseWriter, r *http.R... method handleRewriteSettings (line 227) | func (d *DNSFilter) handleRewriteSettings(w http.ResponseWriter, r *http... method handleRewriteSettingsUpdate (line 237) | func (d *DNSFilter) handleRewriteSettingsUpdate(w http.ResponseWriter, r... FILE: internal/filtering/rewritehttp_test.go type rewriteJSON (line 22) | type rewriteJSON struct function newRewriteJSON (line 29) | func newRewriteJSON(domain, answer string, enabled aghalg.NullBool) (rw ... type rewriteUpdateJSON (line 37) | type rewriteUpdateJSON struct constant listURL (line 43) | listURL = "/control/rewrite/list" constant addURL (line 44) | addURL = "/control/rewrite/add" constant deleteURL (line 45) | deleteURL = "/control/rewrite/delete" constant updateURL (line 46) | updateURL = "/control/rewrite/update" constant decodeMsg (line 48) | decodeMsg = "json.Decode: json: cannot unmarshal string into ... constant decodeErrorMsg (line 49) | decodeErrorMsg = decodeMsg + " filtering.rewriteEntryJSON\n" constant decodeUpdateErrorMsg (line 50) | decodeUpdateErrorMsg = decodeMsg + " filtering.rewriteUpdateJSON\n" function TestDNSFilter_HandleRewriteHTTP (line 53) | func TestDNSFilter_HandleRewriteHTTP(t *testing.T) { function assertRewritesList (line 314) | func assertRewritesList(tb testing.TB, handler http.Handler, wantList []... function rewriteEntriesToLegacyRewrites (line 331) | func rewriteEntriesToLegacyRewrites(entries []*rewriteJSON) (rw []*filte... function TestDNSFilter_HandleRewriteSettings (line 343) | func TestDNSFilter_HandleRewriteSettings(t *testing.T) { FILE: internal/filtering/rewrites.go type LegacyRewrite (line 23) | type LegacyRewrite struct method equal (line 43) | func (rw *LegacyRewrite) equal(other *LegacyRewrite) (ok bool) { method matchesQType (line 48) | func (rw *LegacyRewrite) matchesQType(qt uint16) (ok bool) { method normalize (line 68) | func (rw *LegacyRewrite) normalize(ctx context.Context, l *slog.Logger... method Compare (line 126) | func (rw *LegacyRewrite) Compare(b *LegacyRewrite) (res int) { function isWildcard (line 112) | func isWildcard(pat string) bool { function matchDomainWildcard (line 117) | func matchDomainWildcard(host, wildcard string) (ok bool) { method prepareRewrites (line 146) | func (d *DNSFilter) prepareRewrites(ctx context.Context) (err error) { function findRewrites (line 164) | func findRewrites( function finalizeRewrites (line 192) | func finalizeRewrites(rewrites []*LegacyRewrite) (resRewrites []*LegacyR... method setRewriteResult (line 210) | func (d *DNSFilter) setRewriteResult( function cloneRewrites (line 234) | func cloneRewrites(entries []*LegacyRewrite) (clone []*LegacyRewrite) { FILE: internal/filtering/rewrites_internal_test.go function TestRewrites (line 16) | func TestRewrites(t *testing.T) { function TestRewritesLevels (line 252) | func TestRewritesLevels(t *testing.T) { function TestRewritesExceptionCNAME (line 303) | func TestRewritesExceptionCNAME(t *testing.T) { function TestRewritesExceptionIP (line 358) | func TestRewritesExceptionIP(t *testing.T) { FILE: internal/filtering/rulelist/engine.go type Engine (line 21) | type Engine struct method Close (line 70) | func (e *Engine) Close() (err error) { method FilterRequest (line 88) | func (e *Engine) FilterRequest( method currentEngine (line 95) | func (e *Engine) currentEngine() (engine *urlfilter.DNSEngine) { method Refresh (line 108) | func (e *Engine) Refresh( method resetStorage (line 158) | func (e *Engine) resetStorage(ctx context.Context, storage *filterlist... type EngineConfig (line 45) | type EngineConfig struct function NewEngine (line 60) | func NewEngine(c *EngineConfig) (e *Engine) { function isOneTimeoutError (line 177) | func isOneTimeoutError(errs []error) (ok bool) { type engineRefresh (line 188) | type engineRefresh struct method process (line 203) | func (r *engineRefresh) process( method processFilter (line 239) | func (r *engineRefresh) processFilter(ctx context.Context, f *Filter) ... FILE: internal/filtering/rulelist/engine_test.go function TestEngine_Refresh (line 16) | func TestEngine_Refresh(t *testing.T) { FILE: internal/filtering/rulelist/error.go constant ErrHTML (line 9) | ErrHTML errors.Error = "data is HTML, not plain text" FILE: internal/filtering/rulelist/filter.go type Filter (line 26) | type Filter struct method Refresh (line 113) | func (f *Filter) Refresh( method setFromHTTP (line 149) | func (f *Filter) setFromHTTP( method readFromHTTP (line 176) | func (f *Filter) readFromHTTP( method setName (line 222) | func (f *Filter) setName(title string) { method setFromFile (line 241) | func (f *Filter) setFromFile( method Close (line 304) | func (f *Filter) Close() (err error) { type FilterConfig (line 60) | type FilterConfig struct function NewFilter (line 84) | func NewFilter(c *FilterConfig) (f *Filter, err error) { function parseIntoCache (line 275) | func parseIntoCache( FILE: internal/filtering/rulelist/filter_test.go function TestFilter_Refresh (line 17) | func TestFilter_Refresh(t *testing.T) { FILE: internal/filtering/rulelist/parser.go type Parser (line 16) | type Parser struct method Parse (line 49) | func (p *Parser) Parse(dst io.Writer, src io.Reader, buf []byte) (r *P... method result (line 83) | func (p *Parser) result() (r *ParseResult) { method processLine (line 94) | func (p *Parser) processLine(dst io.Writer, line []byte, lineNum int) ... method parseLineTitle (line 166) | func (p *Parser) parseLineTitle(line []byte) (badIdx int, isRule bool) { function NewParser (line 25) | func NewParser() (p *Parser) { type ParseResult (line 31) | type ParseResult struct function isHTMLLine (line 131) | func isHTMLLine(line []byte) (isHTML bool) { function hasPrefixFold (line 137) | func hasPrefixFold(b, prefix []byte) (ok bool) { function parseLine (line 149) | func parseLine(line []byte) (badIdx int, isRule bool) { function likelyBinary (line 160) | func likelyBinary(b byte) (ok bool) { FILE: internal/filtering/rulelist/parser_test.go function TestParser_Parse (line 17) | func TestParser_Parse(t *testing.T) { function TestParser_Parse_writeError (line 158) | func TestParser_Parse_writeError(t *testing.T) { function TestParser_Parse_checksums (line 176) | func TestParser_Parse_checksums(t *testing.T) { function BenchmarkParser_Parse (line 205) | func BenchmarkParser_Parse(b *testing.B) { function FuzzParser_Parse (line 231) | func FuzzParser_Parse(f *testing.F) { FILE: internal/filtering/rulelist/rulelist.go constant DefaultRuleBufSize (line 21) | DefaultRuleBufSize = 1024 constant DefaultMaxRuleListSize (line 24) | DefaultMaxRuleListSize = 64 * datasize.MB type APIID (line 27) | type APIID constant APIIDCustom (line 34) | APIIDCustom APIID = 0 constant APIIDEtcHosts (line 35) | APIIDEtcHosts APIID = -1 constant APIIDBlockedService (line 36) | APIIDBlockedService APIID = -2 constant APIIDParentalControl (line 37) | APIIDParentalControl APIID = -3 constant APIIDSafeBrowsing (line 38) | APIIDSafeBrowsing APIID = -4 constant APIIDSafeSearch (line 39) | APIIDSafeSearch APIID = -5 constant IDCustom (line 50) | IDCustom rules.ListID = rules.ListID(APIIDCustom) constant IDBlockedService (line 51) | IDBlockedService rules.ListID = math.MaxUint64 - rules.ListID(-APIIDBloc... constant IDSafeSearch (line 52) | IDSafeSearch rules.ListID = math.MaxUint64 - rules.ListID(-APIIDSafe... type UID (line 56) | type UID method String (line 80) | func (id UID) String() (s string) { function NewUID (line 60) | func NewUID() (uid UID, err error) { function MustNewUID (line 67) | func MustNewUID() (uid UID) { constant EngineNameAllow (line 86) | EngineNameAllow = "allow" constant EngineNameBlock (line 87) | EngineNameBlock = "block" constant EngineNameCustom (line 88) | EngineNameCustom = "custom" FILE: internal/filtering/rulelist/rulelist_test.go constant testTimeout (line 22) | testTimeout = 1 * time.Second constant testURLFilterID (line 25) | testURLFilterID rules.ListID = 1 constant testTitle (line 28) | testTitle = "Test Title" constant testRuleTextAllowed (line 32) | testRuleTextAllowed = "||allowed.example^\n" constant testRuleTextBadTab (line 33) | testRuleTextBadTab = "||bad-tab-and-comment.example^\t# A comment.\n" constant testRuleTextBlocked (line 34) | testRuleTextBlocked = "||blocked.example^\n" constant testRuleTextBlocked2 (line 35) | testRuleTextBlocked2 = "||blocked-2.example^\n" constant testRuleTextEtcHostsTab (line 36) | testRuleTextEtcHostsTab = "0.0.0.0 tab..example^\t# A comment.\n" constant testRuleTextHTML (line 37) | testRuleTextHTML = "\n" constant testRuleTextTitle (line 38) | testRuleTextTitle = "! Title: " + testTitle + " \n" constant testRuleTextCosmetic (line 43) | testRuleTextCosmetic = "||cosmetic.example## :has-text(/\u200c/i)\n" function newURLFilterID (line 50) | func newURLFilterID() (id rules.ListID) { function newFilter (line 57) | func newFilter(tb testing.TB, u *url.URL, name string) (f *rulelist.Filt... function newFilterLocations (line 75) | func newFilterLocations( function newStringHTTPServer (line 112) | func newStringHTTPServer(s string) (srv *httptest.Server) { function TestIDs (line 121) | func TestIDs(t *testing.T) { FILE: internal/filtering/rulelist/storage.go type Storage (line 16) | type Storage struct method Close (line 94) | func (s *Storage) Close() (err error) { method Refresh (line 105) | func (s *Storage) Refresh(ctx context.Context) (err error) { type StorageConfig (line 30) | type StorageConfig struct function NewStorage (line 63) | func NewStorage(c *StorageConfig) (s *Storage, err error) { FILE: internal/filtering/rulelist/storage_test.go function TestStorage_Refresh (line 15) | func TestStorage_Refresh(t *testing.T) { FILE: internal/filtering/rulelist/textengine.go type TextEngine (line 14) | type TextEngine struct method FilterRequest (line 69) | func (e *TextEngine) FilterRequest( method Close (line 85) | func (e *TextEngine) Close() (err error) { type TextEngineConfig (line 30) | type TextEngineConfig struct function NewTextEngine (line 44) | func NewTextEngine(c *TextEngineConfig) (e *TextEngine, err error) { FILE: internal/filtering/rulelist/textengine_test.go function TestNewTextEngine (line 14) | func TestNewTextEngine(t *testing.T) { FILE: internal/filtering/safesearch.go type SafeSearch (line 9) | type SafeSearch interface type SafeSearchConfig (line 21) | type SafeSearchConfig struct method checkSafeSearch (line 39) | func (d *DNSFilter) checkSafeSearch( FILE: internal/filtering/safesearch/safesearch.go constant LogPrefix (line 29) | LogPrefix = "safesearch" constant LogKeyClient (line 30) | LogKeyClient = "client" type Service (line 34) | type Service constant Bing (line 38) | Bing Service = "bing" constant DuckDuckGo (line 39) | DuckDuckGo Service = "duckduckgo" constant Ecosia (line 40) | Ecosia Service = "ecosia" constant Google (line 41) | Google Service = "google" constant Pixabay (line 42) | Pixabay Service = "pixabay" constant Yandex (line 43) | Yandex Service = "yandex" constant YouTube (line 44) | YouTube Service = "youtube" function isServiceProtected (line 48) | func isServiceProtected(s filtering.SafeSearchConfig, service Service) (... type DefaultConfig (line 70) | type DefaultConfig struct type Default (line 91) | type Default struct method resetEngine (line 134) | func (ss *Default) resetEngine( method CheckHost (line 176) | func (ss *Default) CheckHost( method searchHost (line 223) | func (ss *Default) searchHost(host string, qtype rules.RRType) (res *r... method newResult (line 247) | func (ss *Default) newResult( method setCacheResult (line 279) | func (ss *Default) setCacheResult( method getCachedResult (line 314) | func (ss *Default) getCachedResult( method Update (line 349) | func (ss *Default) Update(ctx context.Context, conf filtering.SafeSear... function NewDefault (line 111) | func NewDefault(ctx context.Context, conf *DefaultConfig) (ss *Default, ... FILE: internal/filtering/safesearch/safesearch_internal_test.go constant testQType (line 21) | testQType = dns.TypeA constant testCacheSize (line 22) | testCacheSize = 5000 constant testCacheTTL (line 23) | testCacheTTL = 30 * time.Minute constant testTimeout (line 27) | testTimeout = 1 * time.Second function newForTest (line 42) | func newForTest(t testing.TB, ssConf filtering.SafeSearchConfig) (ss *De... function TestSafeSearch (line 54) | func TestSafeSearch(t *testing.T) { function TestSafeSearchCacheYandex (line 61) | func TestSafeSearchCacheYandex(t *testing.T) { function BenchmarkDefault_SearchHost (line 91) | func BenchmarkDefault_SearchHost(b *testing.B) { FILE: internal/filtering/safesearch/safesearch_test.go constant testTimeout (line 21) | testTimeout = 1 * time.Second constant testQType (line 26) | testQType = dns.TypeA constant testCacheSize (line 27) | testCacheSize = 5000 constant testCacheTTL (line 28) | testCacheTTL = 30 * time.Minute function TestDefault_CheckHost_yandex (line 51) | func TestDefault_CheckHost_yandex(t *testing.T) { function TestDefault_CheckHost_google (line 114) | func TestDefault_CheckHost_google(t *testing.T) { type testResolver (line 150) | type testResolver struct method LookupIP (line 158) | func (r *testResolver) LookupIP( function TestDefault_CheckHost_duckduckgoAAAA (line 166) | func TestDefault_CheckHost_duckduckgoAAAA(t *testing.T) { function TestDefault_Update (line 188) | func TestDefault_Update(t *testing.T) { FILE: internal/filtering/safesearchhttp.go method handleSafeSearchEnable (line 14) | func (d *DNSFilter) handleSafeSearchEnable(w http.ResponseWriter, r *htt... method handleSafeSearchDisable (line 23) | func (d *DNSFilter) handleSafeSearchDisable(w http.ResponseWriter, r *ht... method handleSafeSearchStatus (line 30) | func (d *DNSFilter) handleSafeSearchStatus(w http.ResponseWriter, r *htt... method handleSafeSearchSettings (line 44) | func (d *DNSFilter) handleSafeSearchSettings(w http.ResponseWriter, r *h... FILE: internal/filtering/servicelist.go type blockedService (line 6) | type blockedService struct type serviceGroup (line 15) | type serviceGroup struct FILE: internal/home/auth.go constant sessionsDBName (line 19) | sessionsDBName = "sessions.db" type webUser (line 24) | type webUser struct method toUser (line 37) | func (wu *webUser) toUser() (u *aghuser.User) { type authConfig (line 51) | type authConfig struct type auth (line 77) | type auth struct method middleware (line 134) | func (a *auth) middleware() (mw httputil.Middleware) { method usersList (line 155) | func (a *auth) usersList(ctx context.Context) (webUsers []webUser) { method addUser (line 175) | func (a *auth) addUser(ctx context.Context, u *webUser, password strin... method close (line 201) | func (a *auth) close(ctx context.Context) { function newAuth (line 102) | func newAuth(ctx context.Context, conf *authConfig) (a *auth, err error) { FILE: internal/home/auth_internal_test.go function TestAuth_UsersList (line 14) | func TestAuth_UsersList(t *testing.T) { FILE: internal/home/authglinet.go constant glTokenTimeout (line 28) | glTokenTimeout = 3600 * time.Second constant glCookieName (line 32) | glCookieName = "Admin-Token" constant MaxFileSize (line 36) | MaxFileSize = 1024 * 1024 type authMiddlewareGLiNetConfig (line 40) | type authMiddlewareGLiNetConfig struct type authMiddlewareGLiNet (line 65) | type authMiddlewareGLiNet struct method Wrap (line 90) | func (mw *authMiddlewareGLiNet) Wrap(h http.Handler) (wrapped http.Han... method isAuthenticated (line 131) | func (mw *authMiddlewareGLiNet) isAuthenticated(ctx context.Context, r... method checkToken (line 145) | func (mw *authMiddlewareGLiNet) checkToken(ctx context.Context, token ... method tokenDate (line 160) | func (mw *authMiddlewareGLiNet) tokenDate(ctx context.Context, tokenFi... function newAuthMiddlewareGLiNet (line 75) | func newAuthMiddlewareGLiNet(c *authMiddlewareGLiNetConfig) (mw *authMid... FILE: internal/home/authglinet_internal_test.go function TestAuthMiddlewareGLiNet (line 16) | func TestAuthMiddlewareGLiNet(t *testing.T) { FILE: internal/home/authhttp.go constant cookieTTL (line 30) | cookieTTL = 365 * timeutil.Day constant sessionCookieName (line 33) | sessionCookieName = "agh_session" type loginJSON (line 36) | type loginJSON struct function realIP (line 50) | func realIP(r *http.Request) (ip netip.Addr, err error) { function writeErrorWithIP (line 86) | func writeErrorWithIP( method handleLogin (line 100) | func (web *webAPI) handleLogin(w http.ResponseWriter, r *http.Request) { function newCookie (line 194) | func newCookie( method handleLogout (line 238) | func (web *webAPI) handleLogout(w http.ResponseWriter, r *http.Request) { method registerAuthHandlers (line 282) | func (web *webAPI) registerAuthHandlers() { function isPublicResource (line 291) | func isPublicResource(p string) (ok bool) { constant errInvalidLogin (line 326) | errInvalidLogin errors.Error = "invalid username or password" type authMiddlewareDefaultConfig (line 331) | type authMiddlewareDefaultConfig struct type authMiddlewareDefault (line 357) | type authMiddlewareDefault struct method Wrap (line 382) | func (mw *authMiddlewareDefault) Wrap(h http.Handler) (wrapped http.Ha... method handleAuthenticatedUser (line 407) | func (mw *authMiddlewareDefault) handleAuthenticatedUser( method handlePublicAccess (line 438) | func (mw *authMiddlewareDefault) handlePublicAccess( method needsAuthentication (line 461) | func (mw *authMiddlewareDefault) needsAuthentication(ctx context.Conte... method userFromRequest (line 473) | func (mw *authMiddlewareDefault) userFromRequest( method userFromCookie (line 488) | func (mw *authMiddlewareDefault) userFromCookie( method userFromRequestBasicAuth (line 535) | func (mw *authMiddlewareDefault) userFromRequestBasicAuth( function newAuthMiddlewareDefault (line 367) | func newAuthMiddlewareDefault(c *authMiddlewareDefaultConfig) (mw *authM... function sessionTokenFromHex (line 516) | func sessionTokenFromHex(val string) (token aghuser.SessionToken, err er... FILE: internal/home/authhttp_internal_test.go type testSessionStorage (line 34) | type testSessionStorage struct method New (line 71) | func (ts *testSessionStorage) New( method FindByToken (line 80) | func (ts *testSessionStorage) FindByToken( method DeleteByToken (line 89) | func (ts *testSessionStorage) DeleteByToken( method Close (line 98) | func (ts *testSessionStorage) Close() (err error) { function newTestSessionStorage (line 49) | func newTestSessionStorage() (ts *testSessionStorage) { type testUsersDB (line 103) | type testUsersDB struct method All (line 132) | func (db *testUsersDB) All(ctx context.Context) (users []*aghuser.User... method ByLogin (line 137) | func (db *testUsersDB) ByLogin( method ByUUID (line 145) | func (db *testUsersDB) ByUUID(ctx context.Context, id aghuser.UserID) ... method Create (line 150) | func (db *testUsersDB) Create(ctx context.Context, u *aghuser.User) (e... function newTestUsersDB (line 111) | func newTestUsersDB() (ts *testUsersDB) { type testAuthHandler (line 155) | type testAuthHandler struct method ServeHTTP (line 164) | func (h *testAuthHandler) ServeHTTP(w http.ResponseWriter, r *http.Req... function TestAuthMiddlewareDefault (line 169) | func TestAuthMiddlewareDefault(t *testing.T) { function authRequest (line 308) | func authRequest(path string, c *http.Cookie, user, pass string) (r *htt... function TestAuth_ServeHTTP_firstRun (line 322) | func TestAuth_ServeHTTP_firstRun(t *testing.T) { function TestAuth_ServeHTTP_auth (line 435) | func TestAuth_ServeHTTP_auth(t *testing.T) { function generateAuthCookie (line 567) | func generateAuthCookie(tb testing.TB, mux http.Handler, name, password ... function assertHandlerStatusCode (line 594) | func assertHandlerStatusCode(tb testing.TB, h http.Handler, r *http.Requ... function TestAuth_ServeHTTP_logout (line 603) | func TestAuth_ServeHTTP_logout(t *testing.T) { function TestRealIP (line 667) | func TestRealIP(t *testing.T) { FILE: internal/home/authratelimiter.go constant failedAuthTTL (line 10) | failedAuthTTL = 1 * time.Minute type loginRateLimiter (line 13) | type loginRateLimiter interface type emptyRateLimiter (line 27) | type emptyRateLimiter struct method check (line 34) | func (rl emptyRateLimiter) check(_ string) (left time.Duration) { method inc (line 39) | func (rl emptyRateLimiter) inc(_ string) {} method remove (line 42) | func (rl emptyRateLimiter) remove(_ string) {} type failedAuth (line 45) | type failedAuth struct type authRateLimiter (line 51) | type authRateLimiter struct method cleanupLocked (line 73) | func (ab *authRateLimiter) cleanupLocked(now time.Time) { method checkLocked (line 82) | func (ab *authRateLimiter) checkLocked(usrID string, now time.Time) (l... method check (line 96) | func (ab *authRateLimiter) check(usrID string) (left time.Duration) { method incLocked (line 109) | func (ab *authRateLimiter) incLocked(usrID string, now time.Time) { method inc (line 129) | func (ab *authRateLimiter) inc(usrID string) { method remove (line 139) | func (ab *authRateLimiter) remove(usrID string) { function newAuthRateLimiter (line 60) | func newAuthRateLimiter(blockDur time.Duration, maxAttempts uint) (ab *a... FILE: internal/home/authratelimiter_internal_test.go function TestAuthRateLimiter_Cleanup (line 12) | func TestAuthRateLimiter_Cleanup(t *testing.T) { function TestAuthRateLimiter_Check (line 62) | func TestAuthRateLimiter_Check(t *testing.T) { function TestAuthRateLimiter_Inc (line 129) | func TestAuthRateLimiter_Inc(t *testing.T) { function TestAuthRateLimiter_Remove (line 194) | func TestAuthRateLimiter_Remove(t *testing.T) { FILE: internal/home/clients.go type clientsContainer (line 28) | type clientsContainer struct method Init (line 79) | func (clients *clientsContainer) Init( method Start (line 154) | func (clients *clientsContainer) Start(ctx context.Context) (err error) { method forConfig (line 276) | func (clients *clientsContainer) forConfig() (objs []*clientObject) { method findMultiple (line 318) | func (clients *clientsContainer) findMultiple(ids []string) (c *queryl... method clientOrArtificial (line 340) | func (clients *clientsContainer) clientOrArtificial( method shouldCountClient (line 380) | func (clients *clientsContainer) shouldCountClient(ids []string) (y bo... method UpdateAddress (line 408) | func (clients *clientsContainer) UpdateAddress( method close (line 419) | func (clients *clientsContainer) close(ctx context.Context) (err error) { type BlockedClientChecker (line 68) | type BlockedClientChecker interface type clientObject (line 164) | type clientObject struct method toPersistent (line 198) | func (o *clientObject) toPersistent( constant arpClientsUpdatePeriod (line 312) | arpClientsUpdatePeriod = 10 * time.Minute FILE: internal/home/clients_internal_test.go function newClientsContainer (line 16) | func newClientsContainer(tb testing.TB) (c *clientsContainer) { FILE: internal/home/clientshttp.go type clientJSON (line 26) | type clientJSON struct type runtimeClientJSON (line 68) | type runtimeClientJSON struct type clientListJSON (line 78) | type clientListJSON struct function whoisOrEmpty (line 86) | func whoisOrEmpty(r *client.Runtime) (info *whois.Info) { method handleGetClients (line 96) | func (clients *clientsContainer) handleGetClients(w http.ResponseWriter,... function initPrev (line 133) | func initPrev(cj clientJSON, prev *client.Persistent) (c *client.Persist... method jsonToClient (line 187) | func (clients *clientsContainer) jsonToClient( function copySafeSearch (line 238) | func copySafeSearch( function copyBlockedServices (line 268) | func copyBlockedServices( function clientToJSON (line 296) | func clientToJSON(c *client.Persistent) (cj *clientJSON) { method handleAddClient (line 329) | func (clients *clientsContainer) handleAddClient(w http.ResponseWriter, ... method handleDelClient (line 367) | func (clients *clientsContainer) handleDelClient(w http.ResponseWriter, ... type updateJSON (line 403) | type updateJSON struct method handleUpdateClient (line 411) | func (clients *clientsContainer) handleUpdateClient(w http.ResponseWrite... method handleFindClient (line 457) | func (clients *clientsContainer) handleFindClient(w http.ResponseWriter,... method findClient (line 490) | func (clients *clientsContainer) findClient( type searchQueryJSON (line 518) | type searchQueryJSON struct type searchClientJSON (line 524) | type searchClientJSON struct method handleSearchClient (line 530) | func (clients *clientsContainer) handleSearchClient(w http.ResponseWrite... method findRuntime (line 573) | func (clients *clientsContainer) findRuntime( method registerWebHandlers (line 612) | func (clients *clientsContainer) registerWebHandlers() { FILE: internal/home/clientshttp_internal_test.go constant testTimeout (line 26) | testTimeout = 1 * time.Second constant testClientIP1 (line 29) | testClientIP1 = "1.1.1.1" constant testClientIP2 (line 30) | testClientIP2 = "2.2.2.2" type testBlockedClientChecker (line 35) | type testBlockedClientChecker struct method IsBlockedClient (line 44) | func (c *testBlockedClientChecker) IsBlockedClient( function newPersistentClient (line 53) | func newPersistentClient(name string) (c *client.Persistent) { function newPersistentClientWithIDs (line 65) | func newPersistentClientWithIDs(tb testing.TB, name string, ids []string... function assertClients (line 76) | func assertClients(tb testing.TB, want, got []*client.Persistent) { function assertPersistentClients (line 97) | func assertPersistentClients(tb testing.TB, clients *clientsContainer, w... function assertPersistentClientsData (line 122) | func assertPersistentClientsData( function TestClientsContainer_HandleAddClient (line 145) | func TestClientsContainer_HandleAddClient(t *testing.T) { function TestClientsContainer_HandleDelClient (line 201) | func TestClientsContainer_HandleDelClient(t *testing.T) { function TestClientsContainer_HandleUpdateClient (line 264) | func TestClientsContainer_HandleUpdateClient(t *testing.T) { function TestClientsContainer_HandleFindClient (line 342) | func TestClientsContainer_HandleFindClient(t *testing.T) { function TestClientsContainer_HandleSearchClient (line 409) | func TestClientsContainer_HandleSearchClient(t *testing.T) { FILE: internal/home/config.go constant dataDir (line 39) | dataDir = "data" constant userFilterDataDir (line 43) | userFilterDataDir = "userfilters" type logSettings (line 47) | type logSettings struct type osConfig (line 80) | type osConfig struct type clientsConfig (line 92) | type clientsConfig struct type clientSourcesConfig (line 101) | type clientSourcesConfig struct type configuration (line 113) | type configuration struct method write (line 854) | func (c *configuration) write( type httpConfig (line 183) | type httpConfig struct type httpPprofConfig (line 196) | type httpPprofConfig struct type dnsConfig (line 208) | type dnsConfig struct type pendingRequests (line 276) | type pendingRequests struct type tlsConfigSettings (line 285) | type tlsConfigSettings struct method clone (line 354) | func (c *tlsConfigSettings) clone() (clone *tlsConfigSettings) { method setPrivateFieldsAndCompare (line 381) | func (c *tlsConfigSettings) setPrivateFieldsAndCompare(conf *tlsConfig... type queryLogConfig (line 394) | type queryLogConfig struct type statsConfig (line 421) | type statsConfig struct constant defaultSafeBrowsingBlockHost (line 442) | defaultSafeBrowsingBlockHost = "standard-block.dns.adguard.com" constant defaultParentalBlockHost (line 443) | defaultParentalBlockHost = "family-block.dns.adguard.com" function configFilePath (line 615) | func configFilePath( function validateBindHosts (line 642) | func validateBindHosts( function parseConfig (line 665) | func parseConfig(ctx context.Context, l *slog.Logger, workDir, confPath ... function logIPHint (line 720) | func logIPHint(ctx context.Context, l *slog.Logger, data []byte) { function hasNilValue (line 756) | func hasNilValue(m map[string]any) (ok bool) { function validateConfig (line 768) | func validateConfig(ctx context.Context, l *slog.Logger, fileData []byte... type udpPort (line 820) | type udpPort type tcpPort (line 823) | type tcpPort function addPorts (line 826) | func addPorts[T tcpPort | udpPort](uc aghalg.UniqChecker[T], ports ...T) { function readConfigFile (line 835) | func readConfigFile( function validateTLSCipherIDs (line 944) | func validateTLSCipherIDs(cipherIDs []string) (err error) { type defaultConfigModifier (line 958) | type defaultConfigModifier struct method Apply (line 990) | func (cm *defaultConfigModifier) Apply(ctx context.Context) { method setAuth (line 998) | func (cm *defaultConfigModifier) setAuth(a *auth) { method setTLSManager (line 1003) | func (cm *defaultConfigModifier) setTLSManager(m *tlsManager) { function newDefaultConfigModifier (line 971) | func newDefaultConfigModifier( FILE: internal/home/config_internal_test.go function TestConfigFilePath (line 13) | func TestConfigFilePath(t *testing.T) { FILE: internal/home/context.go type ctxKey (line 12) | type ctxKey method String (line 22) | func (k ctxKey) String() (s string) { constant ctxKeyWebUser (line 15) | ctxKeyWebUser ctxKey = iota function panicBadType (line 33) | func panicBadType(key ctxKey, v any) { function withWebUser (line 38) | func withWebUser(ctx context.Context, u *aghuser.User) (withUser context... function webUserFromContext (line 43) | func webUserFromContext(ctx context.Context) (u *aghuser.User, ok bool) { FILE: internal/home/control.go function appendDNSAddrs (line 24) | func appendDNSAddrs(dst []string, addrs ...netip.Addr) (res []string) { function appendDNSAddrsWithIfaces (line 40) | func appendDNSAddrsWithIfaces(dst []string, src []netip.Addr) (res []str... function collectDNSAddresses (line 72) | func collectDNSAddresses(tlsMgr *tlsManager) (addrs []string, err error) { type statusResponse (line 99) | type statusResponse struct method handleStatus (line 120) | func (web *webAPI) handleStatus(w http.ResponseWriter, r *http.Request) { method registerControlHandlers (line 179) | func (web *webAPI) registerControlHandlers() { type webMw (line 217) | type webMw struct method set (line 228) | func (mw *webMw) set(web *webAPI) { method wrap (line 239) | func (mw *webMw) wrap(method string, h http.HandlerFunc) (wrapped http... method ensure (line 258) | func (web *webAPI) ensure( function modifiesData (line 292) | func modifiesData(m string) (ok bool) { method ensureContentType (line 299) | func (web *webAPI) ensureContentType(w http.ResponseWriter, r *http.Requ... method preInstallHandler (line 347) | func (web *webAPI) preInstallHandler(handler http.Handler) (wrapped http... method handleHTTPSRedirect (line 364) | func (web *webAPI) handleHTTPSRedirect(w http.ResponseWriter, r *http.Re... function httpsURL (line 435) | func httpsURL(u *url.URL, host string, portHTTPS uint16) (redirectURL *u... method postInstallHandler (line 452) | func (web *webAPI) postInstallHandler(handler http.Handler) (wrapped htt... FILE: internal/home/controlinstall.go type getAddrsResponse (line 30) | type getAddrsResponse struct method handleInstallGetAddresses (line 45) | func (web *webAPI) handleInstallGetAddresses(w http.ResponseWriter, r *h... type checkConfReqEnt (line 79) | type checkConfReqEnt struct type checkConfReq (line 85) | type checkConfReq struct method validateWeb (line 110) | func (req *checkConfReq) validateWeb(tcpPorts aghalg.UniqChecker[tcpPo... method validateDNS (line 140) | func (req *checkConfReq) validateDNS( type checkConfRespEnt (line 91) | type checkConfRespEnt struct type staticIPJSON (line 96) | type staticIPJSON struct type checkConfResp (line 102) | type checkConfResp struct method handleInstallCheckConfig (line 188) | func (web *webAPI) handleInstallCheckConfig(w http.ResponseWriter, r *ht... function handleStaticIP (line 219) | func handleStaticIP( function checkDNSStubListener (line 266) | func checkDNSStubListener(ctx context.Context, l *slog.Logger) (ok bool) { constant resolvedConfPath (line 300) | resolvedConfPath = "/etc/systemd/resolved.conf.d/adguardhome.conf" constant resolvedConfData (line 301) | resolvedConfData = `[Resolve] constant resolvConfPath (line 306) | resolvConfPath = "/etc/resolv.conf" function disableDNSStubListener (line 310) | func disableDNSStubListener( type applyConfigReqEnt (line 353) | type applyConfigReqEnt struct type applyConfigReq (line 358) | type applyConfigReq struct function copyInstallSettings (line 368) | func copyInstallSettings(dst, src *configuration) { constant shutdownTimeout (line 375) | shutdownTimeout = 5 * time.Second function shutdownSrv (line 378) | func shutdownSrv(ctx context.Context, l *slog.Logger, srv *http.Server) { function shutdownSrv3 (line 401) | func shutdownSrv3(ctx context.Context, l *slog.Logger, srv *http3.Server) { constant PasswordMinRunes (line 422) | PasswordMinRunes = 8 method handleInstallConfigure (line 425) | func (web *webAPI) handleInstallConfigure(w http.ResponseWriter, r *http... method finalizeInstall (line 469) | func (web *webAPI) finalizeInstall( function decodeApplyConfigReq (line 578) | func decodeApplyConfigReq(r io.Reader) (req *applyConfigReq, restartHTTP... function startMods (line 608) | func startMods( method registerInstallHandlers (line 639) | func (web *webAPI) registerInstallHandlers() { FILE: internal/home/controlupdate.go type temporaryError (line 26) | type temporaryError interface method handleVersionJSON (line 34) | func (web *webAPI) handleVersionJSON(w http.ResponseWriter, r *http.Requ... method requestVersionInfo (line 81) | func (web *webAPI) requestVersionInfo( method handleUpdate (line 120) | func (web *webAPI) handleUpdate(w http.ResponseWriter, r *http.Request) { type versionResponse (line 177) | type versionResponse struct method setAllowedToAutoUpdate (line 185) | func (vr *versionResponse) setAllowedToAutoUpdate( function tlsConfUsesPrivilegedPorts (line 211) | func tlsConfUsesPrivilegedPorts(c *tlsConfigSettings) (ok bool) { function finishUpdate (line 217) | func finishUpdate( function finalizeWindowsUpdate (line 247) | func finalizeWindowsUpdate(ctx context.Context, FILE: internal/home/dns.go constant defaultPortDNS (line 35) | defaultPortDNS uint16 = 53 constant defaultPortHTTP (line 36) | defaultPortHTTP uint16 = 80 constant defaultPortHTTPS (line 37) | defaultPortHTTPS uint16 = 443 constant defaultPortQUIC (line 38) | defaultPortQUIC uint16 = 853 constant defaultPortTLS (line 39) | defaultPortTLS uint16 = 853 function initDNS (line 46) | func initDNS( function initDNSServer (line 129) | func initDNSServer( function parseSubnetSet (line 196) | func parseSubnetSet(nets []netutil.Prefix) (s netutil.SubnetSet) { function isRunning (line 208) | func isRunning() bool { function ipsToTCPAddrs (line 212) | func ipsToTCPAddrs(ips []netip.Addr, port uint16) (tcpAddrs []*net.TCPAd... function ipsToAddrPorts (line 227) | func ipsToAddrPorts(ips []netip.Addr, port uint16) (addrs []netip.AddrPo... function ipsToUDPAddrs (line 240) | func ipsToUDPAddrs(ips []netip.Addr, port uint16) (udpAddrs []*net.UDPAd... function newServerConfig (line 255) | func newServerConfig( function newDNSTLSConfig (line 318) | func newDNSTLSConfig( function newDNSCryptConfig (line 373) | func newDNSCryptConfig( type dnsEncryption (line 411) | type dnsEncryption struct function getDNSEncryption (line 419) | func getDNSEncryption(tlsMgr *tlsManager) (de dnsEncryption) { function startDNSServer (line 457) | func startDNSServer() error { function stopDNSServer (line 490) | func stopDNSServer(ctx context.Context) (err error) { function closeDNSServer (line 510) | func closeDNSServer(ctx context.Context) { function checkStatsAndQuerylogDirs (line 540) | func checkStatsAndQuerylogDirs( function checkDir (line 571) | func checkDir(path string) (err error) { FILE: internal/home/home.go type homeContext (line 52) | type homeContext struct function Main (line 82) | func Main(clientBuildFS fs.FS) { function setupContext (line 164) | func setupContext( function logIfUnsupported (line 207) | func logIfUnsupported(msg string, err error) (outErr error) { function configureOS (line 218) | func configureOS(conf *configuration) (err error) { function setupHostsContainer (line 259) | func setupHostsContainer(ctx context.Context, baseLogger *slog.Logger) (... function setupOpts (line 304) | func setupOpts(opts options) (err error) { function initContextClients (line 320) | func initContextClients( function setupBindOpts (line 365) | func setupBindOpts(opts options) (err error) { function setupDNSFilteringConf (line 406) | func setupDNSFilteringConf( function checkPorts (line 531) | func checkPorts() (err error) { function isUpdateEnabled (line 561) | func isUpdateEnabled( type webConfig (line 592) | type webConfig struct function newWeb (line 639) | func newWeb(ctx context.Context, conf *webConfig) (web *webAPI, err erro... function suggestedWebPort (line 699) | func suggestedWebPort(ctx context.Context, l *slog.Logger) (p uint16) { function fatalOnError (line 727) | func fatalOnError(err error) { function run (line 736) | func run( function runDNSServer (line 847) | func runDNSServer( function initTLS (line 879) | func initTLS( function initUpdate (line 928) | func initUpdate( function newUpdater (line 970) | func newUpdater( function checkPermissions (line 1023) | func checkPermissions( function initUsers (line 1043) | func initUsers( method anonymizer (line 1077) | func (c *configuration) anonymizer() (ipmut *aghnet.IPMut) { constant permCheckHelp (line 1087) | permCheckHelp = `Permission check failed. function checkNetworkPermissions (line 1099) | func checkNetworkPermissions(ctx context.Context, l *slog.Logger) { function writePIDFile (line 1131) | func writePIDFile(fn string) bool { function initConfigFilename (line 1144) | func initConfigFilename( function initWorkingDir (line 1164) | func initWorkingDir(opts options) (workDir string, err error) { function cleanup (line 1188) | func cleanup(ctx context.Context) { function cleanupAlways (line 1216) | func cleanupAlways() { function exitWithError (line 1224) | func exitWithError() { function loadCmdLineOpts (line 1231) | func loadCmdLineOpts() (opts options) { function printWebAddrs (line 1258) | func printWebAddrs(proto, addr string, port uint16) { function printHTTPAddresses (line 1266) | func printHTTPAddresses(proto string, tlsMgr *tlsManager) { function detectFirstRun (line 1310) | func detectFirstRun(ctx context.Context, l *slog.Logger, workDir, confPa... type jsonError (line 1331) | type jsonError struct function cmdlineUpdate (line 1338) | func cmdlineUpdate( FILE: internal/home/home_internal_test.go function newTestWeb (line 25) | func newTestWeb( function TestMain (line 55) | func TestMain(m *testing.M) { FILE: internal/home/httpclient.go type customUserAgentTransport (line 16) | type customUserAgentTransport struct method RoundTrip (line 40) | func (t *customUserAgentTransport) RoundTrip(req *http.Request) (resp ... function newCustomUserAgentTransport (line 28) | func newCustomUserAgentTransport(rt http.RoundTripper, ua string) (t *cu... function httpClient (line 54) | func httpClient(tlsMgr *tlsManager) (c *http.Client) { function httpProxy (line 80) | func httpProxy(_ *http.Request) (u *url.URL, err error) { FILE: internal/home/httpclient_internal_test.go function TestCustomUserAgentTransport_RoundTrip (line 15) | func TestCustomUserAgentTransport_RoundTrip(t *testing.T) { FILE: internal/home/i18n.go type languageJSON (line 52) | type languageJSON struct method handleI18nCurrentLanguage (line 60) | func (web *webAPI) handleI18nCurrentLanguage(w http.ResponseWriter, r *h... method handleI18nChangeLanguage (line 75) | func (web *webAPI) handleI18nChangeLanguage(w http.ResponseWriter, r *ht... FILE: internal/home/log.go constant configSyslog (line 20) | configSyslog = "syslog" function newSlogLogger (line 24) | func newSlogLogger(ls *logSettings) (l *slog.Logger) { function configureLogger (line 51) | func configureLogger(ls *logSettings, workDir string) (err error) { function getLogSettings (line 90) | func getLogSettings( function readLogSettings (line 124) | func readLogSettings( FILE: internal/home/middlewares.go type middleware (line 12) | type middleware function withMiddlewares (line 17) | func withMiddlewares(h http.Handler, middlewares ...middleware) (wrapped... constant defaultReqBodySzLim (line 29) | defaultReqBodySzLim datasize.ByteSize = 64 * datasize.KB constant largerReqBodySzLim (line 33) | largerReqBodySzLim datasize.ByteSize = 4 * datasize.MB function expectsLargerRequests (line 43) | func expectsLargerRequests(r *http.Request) (ok bool) { function limitRequestBody (line 58) | func limitRequestBody(h http.Handler) (limited http.Handler) { FILE: internal/home/middlewares_internal_test.go function TestLimitRequestBody (line 15) | func TestLimitRequestBody(t *testing.T) { FILE: internal/home/mobileconfig.go type dnsSettings (line 24) | type dnsSettings struct type payloadContent (line 48) | type payloadContent struct type onDemandRule (line 65) | type onDemandRule struct constant dnsSettingsPayloadType (line 70) | dnsSettingsPayloadType = "com.apple.dnsSettings.managed" type mobileConfig (line 76) | type mobileConfig struct constant dnsProtoHTTPS (line 89) | dnsProtoHTTPS = "HTTPS" constant dnsProtoTLS (line 90) | dnsProtoTLS = "TLS" function encodeMobileConfig (line 93) | func encodeMobileConfig(d *dnsSettings, clientID string) ([]byte, error) { function respondJSONError (line 145) | func respondJSONError(w http.ResponseWriter, status int, msg string) { constant errEmptyHost (line 155) | errEmptyHost errors.Error = "no host in query parameters and no server_n... function handleMobileConfig (line 157) | func handleMobileConfig(w http.ResponseWriter, r *http.Request, dnsp str... function handleMobileConfigDoH (line 207) | func handleMobileConfigDoH(w http.ResponseWriter, r *http.Request) { function handleMobileConfigDoT (line 211) | func handleMobileConfigDoT(w http.ResponseWriter, r *http.Request) { FILE: internal/home/mobileconfig_internal_test.go function setupDNSIPs (line 18) | func setupDNSIPs(tb testing.TB) { function TestHandleMobileConfigDoH (line 34) | func TestHandleMobileConfigDoH(t *testing.T) { function TestHandleMobileConfigDoT (line 101) | func TestHandleMobileConfigDoT(t *testing.T) { FILE: internal/home/options.go type options (line 22) | type options struct function initCmdLineOpts (line 94) | func initCmdLineOpts() { type effect (line 111) | type effect type cmdLineOpt (line 115) | type cmdLineOpt struct function printHelp (line 350) | func printHelp(exec string) { function parseCmdOpts (line 390) | func parseCmdOpts(cmdName string, args []string) (o options, eff effect,... function parseArg (line 406) | func parseArg( function applyOptNoValue (line 427) | func applyOptNoValue( function applyOptWithValue (line 444) | func applyOptWithValue( function findMatchingOpt (line 466) | func findMatchingOpt(arg string) (opt cmdLineOpt, ok bool) { function argMatches (line 477) | func argMatches(opt cmdLineOpt, arg string) (ok bool) { function updateOptsNoValue (line 492) | func updateOptsNoValue( function chainEffect (line 519) | func chainEffect(prev, next effect) (eff effect) { function optsToArgs (line 539) | func optsToArgs(o options) (args []string) { FILE: internal/home/options_internal_test.go function testParseOK (line 14) | func testParseOK(tb testing.TB, ss ...string) (o options) { function testParseErr (line 27) | func testParseErr(tb testing.TB, descr string, ss ...string) { function testParseParamMissing (line 36) | func testParseParamMissing(tb testing.TB, param string) { function TestParseVerbose (line 42) | func TestParseVerbose(t *testing.T) { function TestParseConfigFilename (line 48) | func TestParseConfigFilename(t *testing.T) { function TestParseWorkDir (line 57) | func TestParseWorkDir(t *testing.T) { function TestParseBindHost (line 66) | func TestParseBindHost(t *testing.T) { function TestParseBindPort (line 77) | func TestParseBindPort(t *testing.T) { function TestParseBindAddr (line 93) | func TestParseBindAddr(t *testing.T) { function TestParseLogfile (line 110) | func TestParseLogfile(t *testing.T) { function TestParsePidfile (line 116) | func TestParsePidfile(t *testing.T) { function TestParseCheckConfig (line 121) | func TestParseCheckConfig(t *testing.T) { function TestParseDisableUpdate (line 126) | func TestParseDisableUpdate(t *testing.T) { function TestParsePerformUpdate (line 131) | func TestParsePerformUpdate(t *testing.T) { function TestParseDisableMemoryOptimization (line 137) | func TestParseDisableMemoryOptimization(t *testing.T) { function TestParseService (line 145) | func TestParseService(t *testing.T) { function TestParseGLInet (line 151) | func TestParseGLInet(t *testing.T) { function TestParseUnknown (line 156) | func TestParseUnknown(t *testing.T) { function TestOptsToArgs (line 165) | func TestOptsToArgs(t *testing.T) { FILE: internal/home/profilehttp.go type Theme (line 12) | type Theme method UnmarshalText (line 24) | func (t *Theme) UnmarshalText(b []byte) (err error) { constant ThemeAuto (line 18) | ThemeAuto Theme = "auto" constant ThemeLight (line 19) | ThemeLight Theme = "light" constant ThemeDark (line 20) | ThemeDark Theme = "dark" type profileJSON (line 41) | type profileJSON struct method handleGetProfile (line 48) | func (web *webAPI) handleGetProfile(w http.ResponseWriter, r *http.Reque... method handlePutProfile (line 80) | func (web *webAPI) handlePutProfile(w http.ResponseWriter, r *http.Reque... FILE: internal/home/profilehttp_internal_test.go function TestWeb_HandleGetProfile (line 28) | func TestWeb_HandleGetProfile(t *testing.T) { function TestWeb_HandlePutProfile (line 125) | func TestWeb_HandlePutProfile(t *testing.T) { function newProfileUpdateRequest (line 235) | func newProfileUpdateRequest(method string, body []byte, setCT bool) (re... FILE: internal/home/service.go constant serviceName (line 21) | serviceName = "AdGuardHome" constant serviceDisplayName (line 22) | serviceDisplayName = "AdGuard Home service" constant serviceDescription (line 23) | serviceDescription = "AdGuard Home: Network-level blocker" constant svcLogPrefix (line 27) | svcLogPrefix = "service_manager" type program (line 35) | type program struct method Start (line 52) | func (p *program) Start(_ service.Service) (err error) { method Stop (line 63) | func (p *program) Stop(_ service.Service) (err error) { method handleRun (line 75) | func (p *program) handleRun( function restartService (line 107) | func restartService(ctx context.Context, baseLogger *slog.Logger) (err e... function handleServiceControlAction (line 139) | func handleServiceControlAction( function handleServiceCommand (line 201) | func handleServiceCommand( function handleServiceStatusCmd (line 238) | func handleServiceStatusCmd(ctx context.Context, l *slog.Logger, mgr oss... function handleServiceReloadCmd (line 261) | func handleServiceReloadCmd(ctx context.Context, l *slog.Logger, mgr oss... function handleServiceInstallCmd (line 279) | func handleServiceInstallCmd( FILE: internal/home/signal.go type signalHandler (line 20) | type signalHandler struct method addClientStorage (line 57) | func (h *signalHandler) addClientStorage(s *client.Storage) { method addTLSManager (line 65) | func (h *signalHandler) addTLSManager(m aghtls.Manager) { method handle (line 75) | func (h *signalHandler) handle(ctx context.Context) { method shutdown (line 102) | func (h *signalHandler) shutdown(ctx context.Context) { method reloadConfig (line 117) | func (h *signalHandler) reloadConfig(ctx context.Context) { function newSignalHandler (line 43) | func newSignalHandler( FILE: internal/home/tls.go type tlsManager (line 35) | type tlsManager struct method setWebAPI (line 165) | func (m *tlsManager) setWebAPI(webAPI *webAPI) { method config (line 170) | func (m *tlsManager) config() (conf *tlsConfigSettings) { method setCertFileTime (line 179) | func (m *tlsManager) setCertFileTime(ctx context.Context) { method start (line 197) | func (m *tlsManager) start(ctx context.Context) { method handleCertFileChange (line 213) | func (m *tlsManager) handleCertFileChange(ctx context.Context) { method reload (line 234) | func (m *tlsManager) reload(ctx context.Context) { method reconfigureDNSServer (line 288) | func (m *tlsManager) reconfigureDNSServer(ctx context.Context) (err er... method loadTLSConfig (line 314) | func (m *tlsManager) loadTLSConfig( method handleTLSStatus (line 455) | func (m *tlsManager) handleTLSStatus(w http.ResponseWriter, r *http.Re... method handleTLSValidate (line 478) | func (m *tlsManager) handleTLSValidate(w http.ResponseWriter, r *http.... method setConfig (line 521) | func (m *tlsManager) setConfig( method handleTLSConfigure (line 560) | func (m *tlsManager) handleTLSConfigure(w http.ResponseWriter, r *http... method validateTLSSettings (line 654) | func (m *tlsManager) validateTLSSettings(setts tlsConfigSettingsExt) (... method validateCertChain (line 736) | func (m *tlsManager) validateCertChain( method checkPortAvailability (line 778) | func (m *tlsManager) checkPortAvailability( method parseCertChain (line 841) | func (m *tlsManager) parseCertChain( method validateCertificates (line 928) | func (m *tlsManager) validateCertificates( method validateCertificate (line 975) | func (m *tlsManager) validateCertificate( method marshalTLS (line 1094) | func (m *tlsManager) marshalTLS( method registerWebHandlers (line 1114) | func (m *tlsManager) registerWebHandlers() { type tlsManagerConfig (line 79) | type tlsManagerConfig struct function newTLSManager (line 106) | func newTLSManager(ctx context.Context, conf *tlsManagerConfig) (m *tlsM... function loadCertificateChainData (line 356) | func loadCertificateChainData(tlsConf *tlsConfigSettings) (err error) { function loadPrivateKeyData (line 375) | func loadPrivateKeyData(tlsConf *tlsConfigSettings) (err error) { type tlsConfigStatus (line 392) | type tlsConfigStatus struct type tlsConfig (line 433) | type tlsConfig struct type tlsConfigSettingsExt (line 440) | type tlsConfigSettingsExt struct function validatePorts (line 700) | func validatePorts( constant errNoIPInCert (line 833) | errNoIPInCert errors.Error = `certificates has no IP addresses; ` + function parsePEMCerts (line 871) | func parsePEMCerts(certs []*pem.Block) (parsedCerts []*x509.Certificate,... function validatePKey (line 891) | func validatePKey(pkey []byte) (keyType string, err error) { constant keyTypeECDSA (line 1015) | keyTypeECDSA = "ECDSA" constant keyTypeED25519 (line 1016) | keyTypeED25519 = "ED25519" constant keyTypeRSA (line 1017) | keyTypeRSA = "RSA" function parsePrivateKey (line 1026) | func parsePrivateKey(der []byte) (key crypto.PrivateKey, typ string, err... function unmarshalTLS (line 1055) | func unmarshalTLS(r *http.Request) (tlsConfigSettingsExt, error) { FILE: internal/home/tls_internal_test.go function TestValidateCertificates (line 67) | func TestValidateCertificates(t *testing.T) { function storeGlobals (line 151) | func storeGlobals(tb testing.TB) { function newCertWithoutIP (line 171) | func newCertWithoutIP(tb testing.TB) ( function newCertAndKey (line 232) | func newCertAndKey(tb testing.TB, n int64) (certDER []byte, key *rsa.Pri... function writeCertAndKey (line 250) | func writeCertAndKey( function assertCertSerialNumber (line 287) | func assertCertSerialNumber(tb testing.TB, conf *tlsConfigSettings, want... function TestTLSManager_Reload (line 296) | func TestTLSManager_Reload(t *testing.T) { function TestTLSManager_HandleTLSStatus (line 364) | func TestTLSManager_HandleTLSStatus(t *testing.T) { function TestValidateTLSSettings (line 397) | func TestValidateTLSSettings(t *testing.T) { function TestTLSManager_HandleTLSValidate (line 493) | func TestTLSManager_HandleTLSValidate(t *testing.T) { function TestTLSManager_HandleTLSConfigure (line 543) | func TestTLSManager_HandleTLSConfigure(t *testing.T) { FILE: internal/home/web.go constant readTimeout (line 35) | readTimeout = 60 * time.Second constant readHdrTimeout (line 37) | readHdrTimeout = 60 * time.Second constant writeTimeout (line 40) | writeTimeout = 5 * time.Minute type webAPIConfig (line 44) | type webAPIConfig struct type httpsServer (line 119) | type httpsServer struct type webAPI (line 135) | type webAPI struct method tlsConfigChanged (line 217) | func (web *webAPI) tlsConfigChanged(ctx context.Context, tlsConf *tlsC... method start (line 255) | func (web *webAPI) start(ctx context.Context) { method close (line 313) | func (web *webAPI) close(ctx context.Context) { method tlsServerLoop (line 336) | func (web *webAPI) tlsServerLoop(ctx context.Context) { method serveTLS (line 349) | func (web *webAPI) serveTLS(ctx context.Context) (next bool) { method waitForTLSReady (line 402) | func (web *webAPI) waitForTLSReady() (ok bool) { method mustStartHTTP3 (line 422) | func (web *webAPI) mustStartHTTP3(ctx context.Context, address string) { function newWebAPI (line 176) | func newWebAPI(ctx context.Context, conf *webAPIConfig) (w *webAPI) { constant loggerKeyServer (line 252) | loggerKeyServer = "server" function startPprof (line 447) | func startPprof(baseLogger *slog.Logger, port uint16) { FILE: internal/ipset/ipset.go type Manager (line 14) | type Manager interface type Config (line 20) | type Config struct function NewManager (line 38) | func NewManager(ctx context.Context, conf *Config) (mgr Manager, err err... FILE: internal/ipset/ipset_linux.go function newManager (line 39) | func newManager(ctx context.Context, conf *Config) (set Manager, err err... function defaultDial (line 44) | func defaultDial(pf netfilter.ProtoFamily, conf *netlink.Config) (conn i... type queryConn (line 55) | type queryConn struct method listAll (line 65) | func (qc *queryConn) listAll() (sets []props, err error) { type ipsetConn (line 104) | type ipsetConn interface type dialer (line 112) | type dialer type props (line 115) | type props struct method unmarshalMessage (line 132) | func (p *props) unmarshalMessage(msg netlink.Message) (err error) { method parseAttribute (line 151) | func (p *props) parseAttribute(a netfilter.Attribute) { method parseAttrData (line 168) | func (p *props) parseAttrData(a netfilter.Attribute) { type manager (line 181) | type manager struct method dialNetfilter (line 211) | func (m *manager) dialNetfilter(conf *netlink.Config) (err error) { method parseIpsetConfig (line 261) | func (m *manager) parseIpsetConfig(ctx context.Context, ipsetConf []st... method ipsetProps (line 303) | func (m *manager) ipsetProps(name string) (p props, err error) { method ipsets (line 335) | func (m *manager) ipsets( method lookupHost (line 411) | func (m *manager) lookupHost(host string) (sets []props) { method addIPs (line 436) | func (m *manager) addIPs(host string, set props, ips []net.IP) (n int,... method addToSets (line 490) | func (m *manager) addToSets( method Add (line 529) | func (m *manager) Add(ctx context.Context, host string, ip4s, ip6s []n... method Close (line 544) | func (m *manager) Close() (err error) { type ipInIpsetEntry (line 204) | type ipInIpsetEntry struct function parseIpsetConfigLine (line 231) | func parseIpsetConfigLine(confStr string) (hosts, ipsetNames []string, e... function newManagerWithDialer (line 370) | func newManagerWithDialer(ctx context.Context, conf *Config, dial dialer... FILE: internal/ipset/ipset_linux_internal_test.go constant testTimeout (line 22) | testTimeout = 1 * time.Second type fakeConn (line 25) | type fakeConn struct method Add (line 37) | func (c *fakeConn) Add(name string, entries ...*ipset.Entry) (err erro... method Close (line 52) | func (c *fakeConn) Close() (err error) { method Header (line 57) | func (c *fakeConn) Header(_ string) (_ *ipset.HeaderPolicy, _ error) { method listAll (line 62) | func (c *fakeConn) listAll() (sets []props, err error) { function TestManager_Add (line 66) | func TestManager_Add(t *testing.T) { function BenchmarkManager_LookupHost (line 137) | func BenchmarkManager_LookupHost(b *testing.B) { FILE: internal/ipset/ipset_others.go function newManager (line 11) | func newManager(_ context.Context, _ *Config) (mgr Manager, err error) { FILE: internal/next/agh/agh.go type ServiceWithConfig (line 13) | type ServiceWithConfig interface type EmptyServiceWithConfig (line 27) | type EmptyServiceWithConfig struct method Config (line 35) | func (s *EmptyServiceWithConfig[ConfigType]) Config() (conf ConfigType) { FILE: internal/next/cmd/cmd.go function Main (line 21) | func Main(embeddedFrontend fs.FS) { constant defaultTimeoutStart (line 87) | defaultTimeoutStart = 1 * time.Minute FILE: internal/next/cmd/log.go function newBaseLogger (line 13) | func newBaseLogger(opts *options) (baseLogger *slog.Logger) { FILE: internal/next/cmd/opt.go type options (line 23) | type options struct constant confFileIdx (line 109) | confFileIdx = iota constant logFileIdx (line 110) | logFileIdx constant pidFileIdx (line 111) | pidFileIdx constant serviceActionIdx (line 112) | serviceActionIdx constant workDirIdx (line 113) | workDirIdx constant webAddrIdx (line 114) | webAddrIdx constant checkConfigIdx (line 115) | checkConfigIdx constant disableUpdateIdx (line 116) | disableUpdateIdx constant glinetModeIdx (line 117) | glinetModeIdx constant helpIdx (line 118) | helpIdx constant localFrontendIdx (line 119) | localFrontendIdx constant noPermCheckIdx (line 120) | noPermCheckIdx constant performUpdateIdx (line 121) | performUpdateIdx constant verboseIdx (line 122) | verboseIdx constant versionIdx (line 123) | versionIdx type commandLineOption (line 129) | type commandLineOption struct function parseOptions (line 267) | func parseOptions(cmdName string, args []string) (opts *options, err err... function addOption (line 304) | func addOption(flags *flag.FlagSet, fieldPtr any, o *commandLineOption) { function usage (line 329) | func usage(cmdName string, output io.Writer) { function shouldIncludeDefault (line 354) | func shouldIncludeDefault(v any) (ok bool) { function writeUsageLine (line 366) | func writeUsageLine(b *strings.Builder, o *commandLineOption) { function processOptions (line 386) | func processOptions( function frontendFromOpts (line 427) | func frontendFromOpts( FILE: internal/next/cmd/service.go type serviceMgr (line 19) | type serviceMgr struct method Start (line 61) | func (s *serviceMgr) Start(ctx context.Context) (err error) { method writePID (line 83) | func (s *serviceMgr) writePID(ctx context.Context) { method Shutdown (line 103) | func (s *serviceMgr) Shutdown(ctx context.Context) (err error) { method removePID (line 125) | func (s *serviceMgr) removePID(ctx context.Context) { method Refresh (line 144) | func (s *serviceMgr) Refresh(ctx context.Context) (err error) { method updConfMgr (line 175) | func (s *serviceMgr) updConfMgr(ctx context.Context) (err error) { type serviceMgrConfig (line 30) | type serviceMgrConfig struct function newServiceMgr (line 42) | func newServiceMgr(ctx context.Context, conf *serviceMgrConfig) (s *serv... FILE: internal/next/configmgr/config.go type config (line 14) | type config struct method Validate (line 26) | func (c *config) Validate() (err error) { type dnsConfig (line 54) | type dnsConfig struct method Validate (line 74) | func (c *dnsConfig) Validate() (err error) { type httpConfig (line 85) | type httpConfig struct method Validate (line 101) | func (c *httpConfig) Validate() (err error) { type httpPprofConfig (line 116) | type httpPprofConfig struct method Validate (line 125) | func (c *httpPprofConfig) Validate() (err error) { type logConfig (line 134) | type logConfig struct method Validate (line 145) | func (c *logConfig) Validate() (err error) { FILE: internal/next/configmgr/configmgr.go type Manager (line 33) | type Manager struct method assemble (line 152) | func (m *Manager) assemble( method write (line 206) | func (m *Manager) write(ctx context.Context) (err error) { method DNS (line 223) | func (m *Manager) DNS() (dns agh.ServiceWithConfig[*dnssvc.Config]) { method UpdateDNS (line 232) | func (m *Manager) UpdateDNS(ctx context.Context, c *dnssvc.Config) (er... method updateDNS (line 250) | func (m *Manager) updateDNS(ctx context.Context, c *dnssvc.Config) (er... method updateCurrentDNS (line 269) | func (m *Manager) updateCurrentDNS(c *dnssvc.Config) { method Web (line 284) | func (m *Manager) Web() (web agh.ServiceWithConfig[*websvc.Config]) { method UpdateWeb (line 293) | func (m *Manager) UpdateWeb(ctx context.Context, c *websvc.Config) (er... method updateWeb (line 308) | func (m *Manager) updateWeb(ctx context.Context, c *websvc.Config) (er... method updateCurrentWeb (line 325) | func (m *Manager) updateCurrentWeb(c *websvc.Config) { function Validate (line 59) | func Validate(fileName string) (err error) { type Config (line 75) | type Config struct function New (line 101) | func New(ctx context.Context, c *Config) (m *Manager, err error) { function read (line 130) | func read(fileName string) (conf *config, err error) { FILE: internal/next/dnssvc/config.go type Config (line 14) | type Config struct FILE: internal/next/dnssvc/dnssvc.go type Service (line 32) | type Service struct method Start (line 218) | func (svc *Service) Start(ctx context.Context) (err error) { method Shutdown (line 235) | func (svc *Service) Shutdown(ctx context.Context) (err error) { method Config (line 255) | func (svc *Service) Config() (c *Config) { function New (line 62) | func New(c *Config) (svc *Service, err error) { function newRatelimitMw (line 124) | func newRatelimitMw(l *slog.Logger, limit int) (mw proxy.Middleware, err... function addressesToUpstreams (line 145) | func addressesToUpstreams( function tcpAddrs (line 185) | func tcpAddrs(addrPorts []netip.AddrPort) (tcpAddrs []*net.TCPAddr) { function udpAddrs (line 199) | func udpAddrs(addrPorts []netip.AddrPort) (udpAddrs []*net.UDPAddr) { FILE: internal/next/dnssvc/dnssvc_test.go constant testTimeout (line 18) | testTimeout = 1 * time.Second function TestService (line 20) | func TestService(t *testing.T) { FILE: internal/next/jsonpatch/jsonpatch.go type NonRemovable (line 15) | type NonRemovable struct method UnmarshalJSON (line 24) | func (v *NonRemovable[T]) UnmarshalJSON(b []byte) (err error) { method Set (line 39) | func (v NonRemovable[T]) Set(ptr *T) { FILE: internal/next/jsonpatch/jsonpatch_test.go function TestNonRemovable (line 12) | func TestNonRemovable(t *testing.T) { FILE: internal/next/websvc/config.go type Config (line 12) | type Config struct type PprofConfig (line 57) | type PprofConfig struct method Config (line 66) | func (svc *Service) Config() (c *Config) { FILE: internal/next/websvc/dns.go type ReqPatchSettingsDNS (line 16) | type ReqPatchSettingsDNS struct type HTTPAPIDNSSettings (line 38) | type HTTPAPIDNSSettings struct method handlePatchSettingsDNS (line 62) | func (svc *Service) handlePatchSettingsDNS(w http.ResponseWriter, r *htt... FILE: internal/next/websvc/dns_test.go function TestService_HandlePatchSettingsDNS (line 25) | func TestService_HandlePatchSettingsDNS(t *testing.T) { FILE: internal/next/websvc/http.go type ReqPatchSettingsHTTP (line 19) | type ReqPatchSettingsHTTP struct type HTTPAPIHTTPSettings (line 34) | type HTTPAPIHTTPSettings struct method handlePatchSettingsHTTP (line 45) | func (svc *Service) handlePatchSettingsHTTP(w http.ResponseWriter, r *ht... method relaunch (line 87) | func (svc *Service) relaunch(ctx context.Context, cancel context.CancelF... FILE: internal/next/websvc/http_test.go function TestService_HandlePatchSettingsHTTP (line 22) | func TestService_HandlePatchSettingsHTTP(t *testing.T) { FILE: internal/next/websvc/middleware.go function jsonMw (line 11) | func jsonMw(h http.Handler) (wrapped http.HandlerFunc) { FILE: internal/next/websvc/route.go constant PathPatternFrontend (line 12) | PathPatternFrontend = "/" constant PathPatternHealthCheck (line 13) | PathPatternHealthCheck = "/health-check" constant PathPatternV1SettingsAll (line 14) | PathPatternV1SettingsAll = "/api/v1/settings/all" constant PathPatternV1SettingsDNS (line 15) | PathPatternV1SettingsDNS = "/api/v1/settings/dns" constant PathPatternV1SettingsHTTP (line 16) | PathPatternV1SettingsHTTP = "/api/v1/settings/http" constant PathPatternV1SystemInfo (line 17) | PathPatternV1SystemInfo = "/api/v1/system/info" constant routePatternFrontend (line 22) | routePatternFrontend = http.MethodGet + " " + PathPatternFron... constant routePatternGetV1SettingsAll (line 23) | routePatternGetV1SettingsAll = http.MethodGet + " " + PathPatternV1Se... constant routePatternGetV1SystemInfo (line 24) | routePatternGetV1SystemInfo = http.MethodGet + " " + PathPatternV1Sy... constant routePatternHealthCheck (line 25) | routePatternHealthCheck = http.MethodGet + " " + PathPatternHeal... constant routePatternPatchV1SettingsDNS (line 26) | routePatternPatchV1SettingsDNS = http.MethodPatch + " " + PathPatternV1... constant routePatternPatchV1SettingsHTTP (line 27) | routePatternPatchV1SettingsHTTP = http.MethodPatch + " " + PathPatternV1... method route (line 31) | func (svc *Service) route(mux *http.ServeMux) { FILE: internal/next/websvc/server.go type server (line 28) | type server struct method localAddr (line 83) | func (s *server) localAddr() (addr net.Addr) { method serve (line 99) | func (s *server) serve(ctx context.Context, baseLogger *slog.Logger) { method shutdown (line 133) | func (s *server) shutdown(ctx context.Context) (err error) { constant loggerKeyServer (line 41) | loggerKeyServer = "server" function newServer (line 45) | func newServer( FILE: internal/next/websvc/settings.go type RespGetV1SettingsAll (line 13) | type RespGetV1SettingsAll struct method handleGetSettingsAll (line 22) | func (svc *Service) handleGetSettingsAll(w http.ResponseWriter, r *http.... FILE: internal/next/websvc/settings_test.go function TestService_HandleGetSettingsAll (line 22) | func TestService_HandleGetSettingsAll(t *testing.T) { FILE: internal/next/websvc/system.go type RespGetV1SystemInfo (line 15) | type RespGetV1SystemInfo struct method handleGetV1SystemInfo (line 26) | func (svc *Service) handleGetV1SystemInfo(w http.ResponseWriter, r *http... FILE: internal/next/websvc/system_test.go function TestService_handleGetV1SystemInfo (line 17) | func TestService_handleGetV1SystemInfo(t *testing.T) { FILE: internal/next/websvc/websvc.go type ConfigManager (line 32) | type ConfigManager interface type Service (line 42) | type Service struct method setupPprof (line 99) | func (svc *Service) setupPprof(c *PprofConfig) { method addrs (line 125) | func (svc *Service) addrs() (addrs, secureAddrs []netip.AddrPort) { method Start (line 154) | func (svc *Service) Start(ctx context.Context) (err error) { method wait (line 174) | func (svc *Service) wait(ctx context.Context) (err error) { method serversHaveStarted (line 189) | func (svc *Service) serversHaveStarted() (started bool) { method Shutdown (line 204) | func (svc *Service) Shutdown(ctx context.Context) (err error) { function New (line 62) | func New(c *Config) (svc *Service, err error) { FILE: internal/next/websvc/websvc_test.go constant testTimeout (line 28) | testTimeout = 1 * time.Second type configManager (line 37) | type configManager struct method DNS (line 46) | func (m *configManager) DNS() (svc agh.ServiceWithConfig[*dnssvc.Confi... method Web (line 51) | func (m *configManager) Web() (svc agh.ServiceWithConfig[*websvc.Confi... method UpdateDNS (line 56) | func (m *configManager) UpdateDNS(ctx context.Context, c *dnssvc.Confi... method UpdateWeb (line 61) | func (m *configManager) UpdateWeb(ctx context.Context, c *websvc.Confi... function newConfigManager (line 66) | func newConfigManager() (m *configManager) { function newTestServer (line 86) | func newTestServer( type jobj (line 126) | type jobj function httpGet (line 132) | func httpGet(tb testing.TB, u *url.URL, wantCode int) (body []byte) { function httpPatch (line 158) | func httpPatch(tb testing.TB, u *url.URL, reqBody any, wantCode int) (bo... function TestService_Start_getHealthCheck (line 182) | func TestService_Start_getHealthCheck(t *testing.T) { FILE: internal/ossvc/action.go type ActionName (line 10) | type ActionName constant ActionNameInstall (line 13) | ActionNameInstall ActionName = "install" constant ActionNameRestart (line 14) | ActionNameRestart ActionName = "restart" constant ActionNameStart (line 15) | ActionNameStart ActionName = "start" constant ActionNameStop (line 16) | ActionNameStop ActionName = "stop" constant ActionNameUninstall (line 17) | ActionNameUninstall ActionName = "uninstall" type Action (line 21) | type Action interface FILE: internal/ossvc/config.go function ConfigureServiceOptions (line 14) | func ConfigureServiceOptions(conf *service.Config, versionInfo string) { FILE: internal/ossvc/config_darwin.go function configureOSOptions (line 11) | func configureOSOptions(conf *service.Config) { constant launchdConfig (line 20) | launchdConfig = ` FILE: internal/ossvc/config_freebsd.go function configureOSOptions (line 11) | func configureOSOptions(conf *service.Config) { constant freeBSDScript (line 17) | freeBSDScript = `#!/bin/sh FILE: internal/ossvc/config_linux.go function configureOSOptions (line 12) | func configureOSOptions(conf *service.Config) { constant systemdScript (line 40) | systemdScript = `[Unit] constant sysvScript (line 74) | sysvScript = `#!/bin/sh constant openWrtScript (line 174) | openWrtScript = `#!/bin/sh /etc/rc.common FILE: internal/ossvc/config_openbsd.go function configureOSOptions (line 11) | func configureOSOptions(conf *service.Config) { constant openBSDScript (line 16) | openBSDScript = `#!/bin/ksh FILE: internal/ossvc/config_windows.go function configureOSOptions (line 9) | func configureOSOptions(_ *service.Config) {} FILE: internal/ossvc/defaultaction.go type ActionInstall (line 6) | type ActionInstall struct method Name (line 16) | func (a *ActionInstall) Name() (name ActionName) { return ActionNameIn... method isAction (line 19) | func (a *ActionInstall) isAction() {} type ActionRestart (line 22) | type ActionRestart struct method Name (line 27) | func (a *ActionRestart) Name() (name ActionName) { return ActionNameRe... method isAction (line 30) | func (a *ActionRestart) isAction() {} type ActionStart (line 33) | type ActionStart struct method Name (line 38) | func (a *ActionStart) Name() (name ActionName) { return ActionNameStart } method isAction (line 41) | func (a *ActionStart) isAction() {} type ActionStop (line 44) | type ActionStop struct method Name (line 49) | func (a *ActionStop) Name() (name ActionName) { return ActionNameStop } method isAction (line 52) | func (a *ActionStop) isAction() {} type ActionUninstall (line 55) | type ActionUninstall struct method Name (line 60) | func (a *ActionUninstall) Name() (name ActionName) { return ActionName... method isAction (line 63) | func (a *ActionUninstall) isAction() {} FILE: internal/ossvc/defaultmanager.go type manager (line 20) | type manager struct method Perform (line 47) | func (m *manager) Perform(ctx context.Context, action Action) (err err... method Status (line 82) | func (m *manager) Status(ctx context.Context, name ServiceName) (statu... method Reload (line 123) | func (m *manager) Reload(ctx context.Context, name ServiceName) (err e... method install (line 128) | func (m *manager) install(ctx context.Context, action *ActionInstall) ... method restart (line 165) | func (m *manager) restart(ctx context.Context, action *ActionRestart) ... method start (line 187) | func (m *manager) start(ctx context.Context, action *ActionStart) (err... method stop (line 214) | func (m *manager) stop(ctx context.Context, action *ActionStop) (err e... method uninstall (line 238) | func (m *manager) uninstall(ctx context.Context, action *ActionUninsta... method runInitdCommand (line 306) | func (m *manager) runInitdCommand( function newManager (line 30) | func newManager(_ context.Context, conf *ManagerConfig) (mgr *manager) { constant statusRestartOnFail (line 79) | statusRestartOnFail = service.StatusStopped + 1 constant launchdStdoutPath (line 278) | launchdStdoutPath = "/var/log/AdGuardHome.stdout.log" constant launchdStderrPath (line 279) | launchdStderrPath = "/var/log/AdGuardHome.stderr.log" function removeLaunchdStdLogs (line 286) | func removeLaunchdStdLogs(ctx context.Context, logger *slog.Logger) { type emptyInterface (line 322) | type emptyInterface struct method Start (line 328) | func (emptyInterface) Start(_ service.Service) (err error) { return nil } method Stop (line 331) | func (emptyInterface) Stop(_ service.Service) (err error) { return nil } FILE: internal/ossvc/manager.go type Manager (line 15) | type Manager interface type ManagerConfig (line 24) | type ManagerConfig struct function NewManager (line 34) | func NewManager(ctx context.Context, conf *ManagerConfig) (mgr Manager, ... type EmptyManager (line 39) | type EmptyManager struct method Perform (line 45) | func (EmptyManager) Perform(_ context.Context, _ Action) (err error) { method Status (line 50) | func (EmptyManager) Status(_ context.Context, _ ServiceName) (status S... FILE: internal/ossvc/manager_unix.go method reload (line 20) | func (m *manager) reload(ctx context.Context, name ServiceName) (err err... FILE: internal/ossvc/manager_windows.go method reload (line 13) | func (*manager) reload(context.Context, ServiceName) error { FILE: internal/ossvc/ossvc.go type ServiceName (line 17) | type ServiceName type Status (line 20) | type Status constant StatusNotInstalled (line 24) | StatusNotInstalled Status = "not installed" constant StatusStopped (line 27) | StatusStopped Status = "stopped" constant StatusRunning (line 30) | StatusRunning Status = "running" constant StatusRestartOnFail (line 34) | StatusRestartOnFail Status = "restart on fail" function statusToInternal (line 41) | func statusToInternal(status service.Status) (s Status, err error) { FILE: internal/ossvc/reloadmanager.go type ReloadManager (line 7) | type ReloadManager interface FILE: internal/ossvc/service_linux.go function chooseSystem (line 20) | func chooseSystem() { type sysvSystem (line 44) | type sysvSystem struct method New (line 54) | func (sys *sysvSystem) New(i service.Interface, c *service.Config) (s ... type sysvService (line 71) | type sysvService struct method Install (line 86) | func (svc *sysvService) Install() (err error) { method Uninstall (line 102) | func (svc *sysvService) Uninstall() (err error) { type systemdSystem (line 119) | type systemdSystem struct method New (line 129) | func (sys *systemdSystem) New(i service.Interface, c *service.Config) ... type systemdService (line 149) | type systemdService struct method Status (line 164) | func (s *systemdService) Status() (status service.Status, err error) { constant propNameLoadState (line 201) | propNameLoadState = "LoadState" constant propNameActiveState (line 202) | propNameActiveState = "ActiveState" constant propNameSubState (line 203) | propNameSubState = "SubState" function parseSystemctlShow (line 208) | func parseSystemctlShow(output io.Reader) (status service.Status, err er... function statusFromState (line 240) | func statusFromState(loadState, activeState, subState string) (status se... FILE: internal/ossvc/service_openbsd.go constant sysVersion (line 33) | sysVersion = "openbsd-runcom" function chooseSystem (line 37) | func chooseSystem() { type openbsdSystem (line 42) | type openbsdSystem struct method String (line 45) | func (openbsdSystem) String() string { method Detect (line 50) | func (openbsdSystem) Detect() (ok bool) { method Interactive (line 55) | func (openbsdSystem) Interactive() (ok bool) { method New (line 60) | func (openbsdSystem) New(i service.Interface, c *service.Config) (s se... type openbsdRunComService (line 70) | type openbsdRunComService struct method Platform (line 77) | func (*openbsdRunComService) Platform() (p string) { method String (line 82) | func (s *openbsdRunComService) String() string { method scriptPath (line 136) | func (s *openbsdRunComService) scriptPath() (cp string, err error) { method template (line 167) | func (s *openbsdRunComService) template() (t *template.Template) { method execPath (line 182) | func (s *openbsdRunComService) execPath() (path string, err error) { method annotate (line 195) | func (s *openbsdRunComService) annotate(action string, err error) (ann... method Install (line 200) | func (s *openbsdRunComService) Install() (err error) { method configureSysStartup (line 211) | func (s *openbsdRunComService) configureSysStartup(enable bool) (err e... method writeScript (line 231) | func (s *openbsdRunComService) writeScript() (err error) { method Uninstall (line 273) | func (s *openbsdRunComService) Uninstall() (err error) { method Run (line 304) | func (s *openbsdRunComService) Run() (err error) { method runCom (line 315) | func (s *openbsdRunComService) runCom(cmd string) (out string, err err... method Status (line 337) | func (s *openbsdRunComService) Status() (status service.Status, err er... method Start (line 357) | func (s *openbsdRunComService) Start() (err error) { method Stop (line 364) | func (s *openbsdRunComService) Stop() (err error) { method Restart (line 371) | func (s *openbsdRunComService) Restart() (err error) { method Logger (line 380) | func (s *openbsdRunComService) Logger(errs chan<- error) (l service.Lo... method SystemLogger (line 389) | func (s *openbsdRunComService) SystemLogger(errs chan<- error) (l serv... function getBool (line 89) | func getBool(kv service.KeyValue, name string, defaultValue bool) (val b... function getString (line 101) | func getString(kv service.KeyValue, name, defaultValue string) (val stri... function getFuncNiladic (line 113) | func getFuncNiladic(kv service.KeyValue, name string, defaultValue func(... constant optionUserService (line 124) | optionUserService = "UserService" constant optionUserServiceDefault (line 127) | optionUserServiceDefault = false constant errNoUserServiceRunCom (line 131) | errNoUserServiceRunCom errors.Error = "user services are not supported o... constant optionRunComScript (line 148) | optionRunComScript = "RunComScript" constant runComScript (line 151) | runComScript = `#!/bin/sh constant optionRunWait (line 294) | optionRunWait = "RunWait" function runWait (line 297) | func runWait() { function newSysLogger (line 394) | func newSysLogger(_ string, _ chan<- error) (service.Logger, error) { type sysLogger (line 400) | type sysLogger struct method Error (line 403) | func (sysLogger) Error(v ...any) error { method Warning (line 410) | func (sysLogger) Warning(v ...any) error { method Info (line 417) | func (sysLogger) Info(v ...any) error { method Errorf (line 424) | func (sysLogger) Errorf(format string, a ...any) error { method Warningf (line 431) | func (sysLogger) Warningf(format string, a ...any) error { method Infof (line 438) | func (sysLogger) Infof(format string, a ...any) error { FILE: internal/ossvc/service_others.go function chooseSystem (line 7) | func chooseSystem() {} FILE: internal/permcheck/check_unix.go function check (line 13) | func check( function checkDir (line 35) | func checkDir(ctx context.Context, l *slog.Logger, dirPath string) { function checkFile (line 41) | func checkFile(ctx context.Context, l *slog.Logger, filePath string) { FILE: internal/permcheck/check_windows.go function check (line 19) | func check(ctx context.Context, l *slog.Logger, workDir, _, _, _, _ stri... FILE: internal/permcheck/migrate_unix.go function needsMigration (line 18) | func needsMigration(ctx context.Context, l *slog.Logger, _, confFilePath... function migrate (line 36) | func migrate( function chmodDir (line 58) | func chmodDir(ctx context.Context, l *slog.Logger, dirPath string) { function chmodFile (line 64) | func chmodFile(ctx context.Context, l *slog.Logger, filePath string) { FILE: internal/permcheck/migrate_windows.go function needsMigration (line 14) | func needsMigration(ctx context.Context, l *slog.Logger, workDir, _ stri... function migrate (line 64) | func migrate(ctx context.Context, logger *slog.Logger, workDir, _, _, _,... FILE: internal/permcheck/permcheck.go constant typeDir (line 12) | typeDir = "directory" constant typeFile (line 13) | typeFile = "file" function Check (line 18) | func Check( function NeedsMigration (line 31) | func NeedsMigration(ctx context.Context, l *slog.Logger, workDir, confFi... function Migrate (line 37) | func Migrate( FILE: internal/permcheck/security_unix.go function entities (line 25) | func entities(workDir, dataDir, statsDir, querylogDir, confFilePath stri... function checkPath (line 75) | func checkPath(ctx context.Context, l *slog.Logger, entPath string, want... function chmodPath (line 102) | func chmodPath(ctx context.Context, l *slog.Logger, entPath string, fm f... FILE: internal/permcheck/security_windows.go constant objectType (line 15) | objectType windows.SE_OBJECT_TYPE = windows.SE_FILE_OBJECT constant fileDeleteChildRight (line 21) | fileDeleteChildRight windows.ACCESS_MASK = 0b0100_0000 constant fullControlMask (line 24) | fullControlMask windows.ACCESS_MASK = windows.FILE_LIST_DIRECTORY | function rangeACEs (line 50) | func rangeACEs(dacl *windows.ACL, f aceFunc) (err error) { function setSecurityInfo (line 78) | func setSecurityInfo(fname string, owner *windows.SID, ents []windows.EX... function getSecurityInfo (line 111) | func getSecurityInfo(fname string) (dacl *windows.ACL, owner *windows.SI... function newFullExplicitAccess (line 138) | func newFullExplicitAccess(sid *windows.SID) (accEnt windows.EXPLICIT_AC... function newDenyExplicitAccess (line 153) | func newDenyExplicitAccess( FILE: internal/querylog/client.go type Client (line 7) | type Client struct type clientCacheKey (line 16) | type clientCacheKey struct type clientCache (line 25) | type clientCache FILE: internal/querylog/decode.go type logEntryHandler (line 24) | type logEntryHandler method decodeResultRuleKey (line 178) | func (l *queryLog) decodeResultRuleKey( method decodeVTokenAndAddRule (line 214) | func (l *queryLog) decodeVTokenAndAddRule( method decodeResultRules (line 246) | func (l *queryLog) decodeResultRules(ctx context.Context, dec *json.Deco... method decodeResultRuleToken (line 281) | func (l *queryLog) decodeResultRuleToken( method decodeResultReverseHosts (line 322) | func (l *queryLog) decodeResultReverseHosts(ctx context.Context, dec *js... method decodeResultIPList (line 378) | func (l *queryLog) decodeResultIPList(ctx context.Context, dec *json.Dec... method decodeResultDNSRewriteResultKey (line 420) | func (l *queryLog) decodeResultDNSRewriteResultKey( method decodeResultDNSRewriteResult (line 475) | func (l *queryLog) decodeResultDNSRewriteResult( function translateResult (line 502) | func translateResult(ent *logEntry) { constant ErrEndOfToken (line 533) | ErrEndOfToken errors.Error = "end of token" function parseKeyToken (line 536) | func parseKeyToken(dec *json.Decoder) (key string, err error) { method decodeResult (line 559) | func (l *queryLog) decodeResult(ctx context.Context, dec *json.Decoder, ... method resultDecHandler (line 688) | func (l *queryLog) resultDecHandler( method decodeLogEntry (line 712) | func (l *queryLog) decodeLogEntry(ctx context.Context, ent *logEntry, st... function newUnexpectedDelimiterError (line 765) | func newUnexpectedDelimiterError(d json.Delim) (err error) { FILE: internal/querylog/decode_internal_test.go constant testTimeout (line 23) | testTimeout = 1 * time.Second function TestQueryLog_DecodeLogEntry_success (line 25) | func TestQueryLog_DecodeLogEntry_success(t *testing.T) { function TestQueryLog_DecodeLogEntry (line 114) | func TestQueryLog_DecodeLogEntry(t *testing.T) { function TestDecodeLogEntry_backwardCompatability (line 218) | func TestDecodeLogEntry_backwardCompatability(t *testing.T) { function anonymizeIPSlow (line 290) | func anonymizeIPSlow(ip net.IP) { function BenchmarkAnonymizeIP (line 300) | func BenchmarkAnonymizeIP(b *testing.B) { FILE: internal/querylog/entry.go type logEntry (line 16) | type logEntry struct method shallowClone (line 48) | func (e *logEntry) shallowClone() (clone *logEntry) { method addResponse (line 57) | func (e *logEntry) addResponse(ctx context.Context, l *slog.Logger, re... method parseDNSRewriteResultIPs (line 78) | func (e *logEntry) parseDNSRewriteResultIPs() { FILE: internal/querylog/http.go type configJSON (line 26) | type configJSON struct type getConfigResp (line 42) | type getConfigResp struct method initWeb (line 64) | func (l *queryLog) initWeb() { method handleQueryLog (line 80) | func (l *queryLog) handleQueryLog(w http.ResponseWriter, r *http.Request) { method handleQueryLogClear (line 105) | func (l *queryLog) handleQueryLogClear(_ http.ResponseWriter, r *http.Re... method handleQueryLogInfo (line 113) | func (l *queryLog) handleQueryLogInfo(w http.ResponseWriter, r *http.Req... method handleGetQueryLogConfig (line 134) | func (l *queryLog) handleGetQueryLogConfig(w http.ResponseWriter, r *htt... function AnonymizeIP (line 153) | func AnonymizeIP(ip net.IP) { method handleQueryLogConfig (line 170) | func (l *queryLog) handleQueryLogConfig(w http.ResponseWriter, r *http.R... method handlePutQueryLogConfig (line 223) | func (l *queryLog) handlePutQueryLogConfig(w http.ResponseWriter, r *htt... constant ErrNullConfEnabled (line 281) | ErrNullConfEnabled errors.Error = "enabled is null" constant ErrNullAnonymizeIP (line 285) | ErrNullAnonymizeIP errors.Error = "anonymize_client_ip is null" function readConfigResp (line 290) | func readConfigResp(r *http.Request) (conf *getConfigResp, err error) { method applyQueryLogConfig (line 312) | func (l *queryLog) applyQueryLogConfig( function getDoubleQuotesEnclosedValue (line 340) | func getDoubleQuotesEnclosedValue(s *string) bool { method parseSearchCriterion (line 350) | func (l *queryLog) parseSearchCriterion( method parseSearchParams (line 402) | func (l *queryLog) parseSearchParams( FILE: internal/querylog/json.go method entriesToJSON (line 24) | func (l *queryLog) entriesToJSON( method entryToJSON (line 50) | func (l *queryLog) entryToJSON( function questionPayload (line 102) | func questionPayload(ctx context.Context, l *slog.Logger, entry *logEntr... method setMsgData (line 125) | func (l *queryLog) setMsgData(ctx context.Context, entry *logEntry, json... method setOrigAns (line 153) | func (l *queryLog) setOrigAns(ctx context.Context, entry *logEntry, json... function resultRulesToJSONRules (line 176) | func resultRulesToJSONRules(rules []*filtering.ResultRule) (jsonRules []... type dnsAnswer (line 188) | type dnsAnswer struct function answerToJSON (line 195) | func answerToJSON(msg *dns.Msg) (answers []*dnsAnswer) { FILE: internal/querylog/qlog.go constant queryLogFileName (line 23) | queryLogFileName = "querylog.json" type queryLog (line 26) | type queryLog struct method Start (line 89) | func (l *queryLog) Start(ctx context.Context) (err error) { method Shutdown (line 100) | func (l *queryLog) Shutdown(ctx context.Context) (err error) { method WriteDiskConfig (line 143) | func (l *queryLog) WriteDiskConfig(c *Config) { method clear (line 151) | func (l *queryLog) clear(ctx context.Context) { method Add (line 219) | func (l *queryLog) Add(params *AddParams) { method ShouldLog (line 269) | func (l *queryLog) ShouldLog(host string, _, _ uint16, ids []string) b... method isIgnored (line 288) | func (l *queryLog) isIgnored(host string) bool { type ClientProto (line 57) | type ClientProto constant ClientProtoDoH (line 61) | ClientProtoDoH ClientProto = "doh" constant ClientProtoDoQ (line 62) | ClientProtoDoQ ClientProto = "doq" constant ClientProtoDoT (line 63) | ClientProtoDoT ClientProto = "dot" constant ClientProtoDNSCrypt (line 64) | ClientProtoDNSCrypt ClientProto = "dnscrypt" constant ClientProtoPlain (line 65) | ClientProtoPlain ClientProto = "" function NewClientProto (line 70) | func NewClientProto(s string) (cp ClientProto, err error) { function checkInterval (line 115) | func checkInterval(ivl time.Duration) (ok bool) { function validateIvl (line 130) | func validateIvl(ivl time.Duration) (err error) { function newLogEntry (line 183) | func newLogEntry(ctx context.Context, logger *slog.Logger, params *AddPa... FILE: internal/querylog/qlog_internal_test.go function searchCriTerm (line 20) | func searchCriTerm(val string, isStrict bool) (c searchCriterion) { function TestQueryLog (line 30) | func TestQueryLog(t *testing.T) { function TestQueryLogOffsetLimit (line 125) | func TestQueryLogOffsetLimit(t *testing.T) { function TestQueryLogMaxFileScanEntries (line 204) | func TestQueryLogMaxFileScanEntries(t *testing.T) { function TestQueryLogFileDisabled (line 235) | func TestQueryLogFileDisabled(t *testing.T) { function TestQueryLogShouldLog (line 260) | func TestQueryLogShouldLog(t *testing.T) { function addEntry (line 340) | func addEntry(l *queryLog, host string, answerStr, client net.IP) { function assertLogEntry (line 383) | func assertLogEntry(tb testing.TB, entry *logEntry, host string, answer,... FILE: internal/querylog/qlogfile.go constant errTSNotFound (line 20) | errTSNotFound errors.Error = "ts not found" constant errTSTooLate (line 21) | errTSTooLate errors.Error = "ts too late" constant errTSTooEarly (line 22) | errTSTooEarly errors.Error = "ts too early" constant maxEntrySize (line 28) | maxEntrySize = 16 * 1024 constant bufferSize (line 31) | bufferSize = 100 * maxEntrySize type qLogFile (line 40) | type qLogFile struct method validateQLogLineIdx (line 72) | func (q *qLogFile) validateQLogLineIdx(lineIdx, lastProbeLineIdx, ts, ... method seekTS (line 106) | func (q *qLogFile) seekTS( method seekTSStep (line 183) | func (q *qLogFile) seekTSStep( method readAndValidateProbe (line 243) | func (q *qLogFile) readAndValidateProbe( method SeekStart (line 269) | func (q *qLogFile) SeekStart() (int64, error) { method ReadNext (line 295) | func (q *qLogFile) ReadNext() (string, error) { method Close (line 320) | func (q *qLogFile) Close() error { method readNextLine (line 332) | func (q *qLogFile) readNextLine(position int64) (string, int64, error) { method initBuffer (line 360) | func (q *qLogFile) initBuffer(position int64) error { method readProbeLine (line 384) | func (q *qLogFile) readProbeLine(position int64) (string, int64, int64... function newQLogFile (line 61) | func newQLogFile(path string) (qf *qLogFile, err error) { type tsSearchState (line 152) | type tsSearchState struct constant maxSearchDepth (line 179) | maxSearchDepth = 100 function readJSONValue (line 435) | func readJSONValue(s, prefix string) string { function readQLogTimestamp (line 452) | func readQLogTimestamp(ctx context.Context, logger *slog.Logger, str str... FILE: internal/querylog/qlogfile_internal_test.go function prepareTestFile (line 23) | func prepareTestFile(tb testing.TB, dir string, linesNum int) (name stri... function prepareTestFiles (line 60) | func prepareTestFiles(tb testing.TB, filesNum, linesNum int) []string { function newTestQLogFile (line 79) | func newTestQLogFile(tb testing.TB, linesNum int) (file *qLogFile) { function TestQLogFile_ReadNext (line 94) | func TestQLogFile_ReadNext(t *testing.T) { function readAllLines (line 132) | func readAllLines(tb testing.TB, q *qLogFile) (n int) { function TestQLogFile_SeekTS_good (line 149) | func TestQLogFile_SeekTS_good(t *testing.T) { function TestQLogFile_SeekTS_bad (line 208) | func TestQLogFile_SeekTS_bad(t *testing.T) { function getQLogFileLine (line 264) | func getQLogFileLine(q *qLogFile, lineNumber int) (line string, err erro... function TestQLogFile (line 279) | func TestQLogFile(t *testing.T) { function newTestQLogFileData (line 313) | func newTestQLogFileData(t *testing.T, data string) (file *qLogFile) { function TestQLog_Seek (line 330) | func TestQLog_Seek(t *testing.T) { FILE: internal/querylog/qlogreader.go type qLogReader (line 20) | type qLogReader struct method seekTS (line 66) | func (r *qLogReader) seekTS(ctx context.Context, timestamp int64) (err... method SeekStart (line 109) | func (r *qLogReader) SeekStart() error { method ReadNext (line 125) | func (r *qLogReader) ReadNext() (string, error) { method Close (line 158) | func (r *qLogReader) Close() error { function newQLogReader (line 34) | func newQLogReader(ctx context.Context, logger *slog.Logger, files []str... function closeQFiles (line 163) | func closeQFiles(qFiles []*qLogFile) (err error) { FILE: internal/querylog/qlogreader_internal_test.go function newTestQLogReader (line 16) | func newTestQLogReader(tb testing.TB, filesNum, linesNum int) (reader *q... function TestQLogReader (line 34) | func TestQLogReader(t *testing.T) { function TestQLogReader_Seek (line 78) | func TestQLogReader_Seek(t *testing.T) { function TestQLogReader_ReadNext (line 127) | func TestQLogReader_ReadNext(t *testing.T) { FILE: internal/querylog/querylog.go type QueryLog (line 22) | type QueryLog interface type Config (line 39) | type Config struct type AddParams (line 85) | type AddParams struct method validate (line 122) | func (p *AddParams) validate() (err error) { function New (line 138) | func New(conf Config) (ql QueryLog, err error) { function newQueryLog (line 143) | func newQueryLog(conf Config) (l *queryLog, err error) { FILE: internal/querylog/querylogfile.go method flushLogBuffer (line 19) | func (l *queryLog) flushLogBuffer(ctx context.Context) (err error) { method encodeEntries (line 36) | func (l *queryLog) encodeEntries(ctx context.Context) (b *bytes.Buffer, ... method flushToFile (line 80) | func (l *queryLog) flushToFile(ctx context.Context, b *bytes.Buffer) (er... method rotate (line 103) | func (l *queryLog) rotate(ctx context.Context) error { method readFileFirstTimeValue (line 123) | func (l *queryLog) readFileFirstTimeValue(ctx context.Context) (first ti... method periodicRotate (line 150) | func (l *queryLog) periodicRotate(ctx context.Context) { method checkAndRotate (line 172) | func (l *queryLog) checkAndRotate(ctx context.Context) { FILE: internal/querylog/search.go method client (line 20) | func (l *queryLog) client(clientID, ip string, cache clientCache) (c *Cl... method searchMemory (line 53) | func (l *queryLog) searchMemory( method search (line 100) | func (l *queryLog) search( method finalizeSearchResults (line 145) | func (l *queryLog) finalizeSearchResults( method seekRecord (line 176) | func (r *qLogReader) seekRecord(ctx context.Context, olderThan time.Time... method setQLogReader (line 193) | func (l *queryLog) setQLogReader( method readEntries (line 222) | func (l *queryLog) readEntries( method searchFiles (line 261) | func (l *queryLog) searchFiles( type quickMatchClientFinder (line 292) | type quickMatchClientFinder struct method findClient (line 298) | func (f quickMatchClientFinder) findClient( method readNextEntry (line 323) | func (l *queryLog) readNextEntry( FILE: internal/querylog/search_internal_test.go function TestQueryLog_Search_findClient (line 16) | func TestQueryLog_Search_findClient(t *testing.T) { FILE: internal/querylog/searchcriterion.go type criterionType (line 13) | type criterionType constant ctTerm (line 19) | ctTerm criterionType = iota constant ctFilteringStatus (line 23) | ctFilteringStatus constant filteringStatusAll (line 27) | filteringStatusAll = "all" constant filteringStatusFiltered (line 28) | filteringStatusFiltered = "filtered" constant filteringStatusBlocked (line 30) | filteringStatusBlocked = "blocked" constant filteringStatusBlockedService (line 31) | filteringStatusBlockedService = "blocked_services" constant filteringStatusBlockedSafebrowsing (line 32) | filteringStatusBlockedSafebrowsing = "blocked_safebrowsing" constant filteringStatusBlockedParental (line 33) | filteringStatusBlockedParental = "blocked_parental" constant filteringStatusWhitelisted (line 34) | filteringStatusWhitelisted = "whitelisted" constant filteringStatusRewritten (line 35) | filteringStatusRewritten = "rewritten" constant filteringStatusSafeSearch (line 36) | filteringStatusSafeSearch = "safe_search" constant filteringStatusProcessed (line 37) | filteringStatusProcessed = "processed" type searchCriterion (line 49) | type searchCriterion struct method quickMatch (line 92) | func (c *searchCriterion) quickMatch( method match (line 124) | func (c *searchCriterion) match(entry *logEntry) bool { method ctDomainOrClientCase (line 135) | func (c *searchCriterion) ctDomainOrClientCase(e *logEntry) bool { method ctFilteringStatusCase (line 153) | func (c *searchCriterion) ctFilteringStatusCase( method isFilteredWithReason (line 201) | func (c *searchCriterion) isFilteredWithReason(reason filtering.Reason... function ctDomainOrClientCaseStrict (line 59) | func ctDomainOrClientCaseStrict( function ctDomainOrClientCaseNonStrict (line 74) | func ctDomainOrClientCaseNonStrict( FILE: internal/querylog/searchparams.go type searchParams (line 10) | type searchParams struct method quickMatch (line 51) | func (s *searchParams) quickMatch( method match (line 67) | func (s *searchParams) match(entry *logEntry) bool { function newSearchParams (line 31) | func newSearchParams() *searchParams { FILE: internal/rdns/rdns.go type Interface (line 16) | type Interface interface type Empty (line 23) | type Empty struct method Process (line 29) | func (Empty) Process(_ context.Context, _ netip.Addr) (host string, ch... type Exchanger (line 34) | type Exchanger interface type Config (line 41) | type Config struct type Default (line 58) | type Default struct method Process (line 90) | func (r *Default) Process(ctx context.Context, ip netip.Addr) (host st... method findInCache (line 120) | func (r *Default) findInCache(ctx context.Context, ip netip.Addr) (hos... function New (line 77) | func New(conf *Config) (r *Default) { type cacheItem (line 141) | type cacheItem struct FILE: internal/rdns/rdns_test.go constant testTimeout (line 18) | testTimeout = 1 * time.Second function TestDefault_Process (line 20) | func TestDefault_Process(t *testing.T) { FILE: internal/schedule/schedule.go type Weekly (line 17) | type Weekly struct method Clone (line 54) | func (w *Weekly) Clone() (c *Weekly) { method Contains (line 69) | func (w *Weekly) Contains(t time.Time) (ok bool) { method UnmarshalJSON (line 88) | func (w *Weekly) UnmarshalJSON(data []byte) (err error) { method UnmarshalYAML (line 138) | func (w *Weekly) UnmarshalYAML(value *yaml.Node) (err error) { method validate (line 209) | func (w *Weekly) validate(r dayRange) (err error) { method MarshalJSON (line 235) | func (w *Weekly) MarshalJSON() (data []byte, err error) { method MarshalYAML (line 254) | func (w *Weekly) MarshalYAML() (v any, err error) { function EmptyWeekly (line 27) | func EmptyWeekly() (w *Weekly) { function FullWeekly (line 36) | func FullWeekly() (w *Weekly) { type weeklyConfigYAML (line 184) | type weeklyConfigYAML struct type dayConfigYAML (line 200) | type dayConfigYAML struct constant maxDayRange (line 206) | maxDayRange = 24 * time.Hour type dayRange (line 291) | type dayRange struct method validate (line 302) | func (r dayRange) validate() (err error) { method contains (line 323) | func (r *dayRange) contains(offset time.Duration) (ok bool) { method toDayConfigJSON (line 329) | func (r dayRange) toDayConfigJSON() (j *dayConfigJSON) { type weeklyConfigJSON (line 341) | type weeklyConfigJSON struct type dayConfigJSON (line 357) | type dayConfigJSON struct FILE: internal/schedule/schedule_internal_test.go function TestWeekly_Contains (line 15) | func TestWeekly_Contains(t *testing.T) { constant brusselsSundayYAML (line 126) | brusselsSundayYAML = ` function TestWeekly_UnmarshalYAML (line 133) | func TestWeekly_UnmarshalYAML(t *testing.T) { function TestWeekly_MarshalYAML (line 223) | func TestWeekly_MarshalYAML(t *testing.T) { function TestWeekly_Validate (line 268) | func TestWeekly_Validate(t *testing.T) { function TestDayRange_Validate (line 303) | func TestDayRange_Validate(t *testing.T) { constant brusselsSundayJSON (line 379) | brusselsSundayJSON = `{ function TestWeekly_UnmarshalJSON (line 387) | func TestWeekly_UnmarshalJSON(t *testing.T) { function TestWeekly_MarshalJSON (line 473) | func TestWeekly_MarshalJSON(t *testing.T) { FILE: internal/stats/http.go constant queryKeyRecent (line 21) | queryKeyRecent = "recent" constant millisecondsInHour (line 24) | millisecondsInHour = int64(time.Hour / time.Millisecond) type StatsResp (line 34) | type StatsResp struct method handleStats (line 60) | func (s *StatsCtx) handleStats(w http.ResponseWriter, r *http.Request) { function parseRecent (line 101) | func parseRecent(recent string, limit time.Duration) (parsedLimit time.D... type configResp (line 125) | type configResp struct type getConfigResp (line 130) | type getConfigResp struct method handleStatsInfo (line 148) | func (s *StatsCtx) handleStatsInfo(w http.ResponseWriter, r *http.Reques... method handleGetStatsConfig (line 178) | func (s *StatsCtx) handleGetStatsConfig(w http.ResponseWriter, r *http.R... method handleStatsConfig (line 198) | func (s *StatsCtx) handleStatsConfig(w http.ResponseWriter, r *http.Requ... method handlePutStatsConfig (line 227) | func (s *StatsCtx) handlePutStatsConfig(w http.ResponseWriter, r *http.R... method handleStatsReset (line 285) | func (s *StatsCtx) handleStatsReset(w http.ResponseWriter, r *http.Reque... method initWeb (line 301) | func (s *StatsCtx) initWeb() { FILE: internal/stats/http_internal_test.go constant TestDomain1 (line 22) | TestDomain1 = "example.com" constant TestDomain2 (line 23) | TestDomain2 = "example.org" function TestHandleStatsConfig (line 26) | func TestHandleStatsConfig(t *testing.T) { function populateTestData (line 136) | func populateTestData(tb testing.TB, s *StatsCtx) { function TestStatsCtx_handleStats (line 164) | func TestStatsCtx_handleStats(t *testing.T) { FILE: internal/stats/stats.go function checkInterval (line 29) | func checkInterval(days uint32) (ok bool) { function validateIvl (line 35) | func validateIvl(ivl time.Duration) (err error) { type Config (line 50) | type Config struct type Interface (line 88) | type Interface interface type StatsCtx (line 110) | type StatsCtx struct method Start (line 239) | func (s *StatsCtx) Start() { method Close (line 246) | func (s *StatsCtx) Close() (err error) { method Update (line 276) | func (s *StatsCtx) Update(e *Entry) { method WriteDiskConfig (line 304) | func (s *StatsCtx) WriteDiskConfig(dc *Config) { method TopClientsIP (line 314) | func (s *StatsCtx) TopClientsIP(maxCount uint) (ips []netip.Addr) { method deleteOldUnits (line 350) | func (s *StatsCtx) deleteOldUnits(tx *bbolt.Tx, firstID uint32) (delet... method openDB (line 387) | func (s *StatsCtx) openDB() (err error) { method flush (line 418) | func (s *StatsCtx) flush() (cont bool, sleepFor time.Duration) { method flushDB (line 442) | func (s *StatsCtx) flushDB(id, limit uint32, ptr *unit) (cont bool, sl... method periodicFlush (line 492) | func (s *StatsCtx) periodicFlush() { method setLimit (line 503) | func (s *StatsCtx) setLimit(limit time.Duration) { method clear (line 521) | func (s *StatsCtx) clear() (err error) { method loadUnits (line 568) | func (s *StatsCtx) loadUnits(limit uint32) (units []*unitDB, curID uin... method ShouldCount (line 623) | func (s *StatsCtx) ShouldCount(host string, _, _ uint16, ids []string)... method isIgnored (line 636) | func (s *StatsCtx) isIgnored(host string) bool { function New (line 155) | func New(conf Config) (s *StatsCtx, err error) { function withRecovered (line 218) | func withRecovered(orig *error) { FILE: internal/stats/stats_internal_test.go function newTestStatsCtx (line 26) | func newTestStatsCtx(tb testing.TB, c Config) (s *StatsCtx) { function TestStats_races (line 47) | func TestStats_races(t *testing.T) { function TestStatsCtx_FillCollectedStats_daily (line 114) | func TestStatsCtx_FillCollectedStats_daily(t *testing.T) { function TestStatsCtx_DataFromUnits_month (line 173) | func TestStatsCtx_DataFromUnits_month(t *testing.T) { FILE: internal/stats/stats_test.go function constUnitID (line 29) | func constUnitID() (id uint32) { return 0 } function assertSuccessAndUnmarshal (line 31) | func assertSuccessAndUnmarshal(tb testing.TB, to any, handler http.Handl... function TestStats (line 52) | func TestStats(t *testing.T) { function TestLargeNumbers (line 176) | func TestLargeNumbers(t *testing.T) { function TestShouldCount (line 227) | func TestShouldCount(t *testing.T) { FILE: internal/stats/unit.go constant maxDomains (line 21) | maxDomains = 100 constant maxClients (line 24) | maxClients = 100 constant maxUpstreams (line 27) | maxUpstreams = 100 type UnitIDGenFunc (line 32) | type UnitIDGenFunc constant timeUnitsHours (line 36) | timeUnitsHours = "hours" constant timeUnitsDays (line 37) | timeUnitsDays = "days" type Result (line 41) | type Result constant RNotFiltered (line 47) | RNotFiltered Result = iota + 1 constant RFiltered (line 48) | RFiltered constant RSafeBrowsing (line 49) | RSafeBrowsing constant RSafeSearch (line 50) | RSafeSearch constant RParental (line 51) | RParental constant resultLast (line 53) | resultLast = RParental + 1 type Entry (line 57) | type Entry struct method validate (line 79) | func (e *Entry) validate() (err error) { type unit (line 95) | type unit struct method serialize (line 258) | func (u *unit) serialize() (udb *unitDB) { method deserialize (line 301) | func (u *unit) deserialize(udb *unitDB) { method add (line 318) | func (u *unit) add(e *Entry) { function newUnit (line 132) | func newUnit(id uint32) (u *unit) { type countPair (line 146) | type countPair struct method compareCount (line 225) | func (a countPair) compareCount(b countPair) (res int) { type unitDB (line 155) | type unitDB struct function newUnitID (line 184) | func newUnitID() (id uint32) { function finishTxn (line 190) | func finishTxn(tx *bbolt.Tx, commit bool) (err error) { constant bucketNameLen (line 204) | bucketNameLen = 8 function idToUnitName (line 207) | func idToUnitName(id uint32) (name []byte) { function unitNameToID (line 216) | func unitNameToID(name []byte) (id uint32, ok bool) { function convertMapToSlice (line 236) | func convertMapToSlice(m map[string]uint64, maxVal int) (s []countPair) { function convertSliceToMap (line 247) | func convertSliceToMap(a []countPair) (m map[string]uint64) { method loadUnitFromDB (line 277) | func (s *StatsCtx) loadUnitFromDB(tx *bbolt.Tx, id uint32) (udb *unitDB) { method flushUnitToDB (line 343) | func (s *StatsCtx) flushUnitToDB(udb *unitDB, tx *bbolt.Tx, id uint32) (... function convertTopSlice (line 365) | func convertTopSlice(a []countPair) (m []map[string]uint64) { type pairsGetter (line 375) | type pairsGetter function topsCollector (line 379) | func topsCollector(units []*unitDB, max int, ignored *aghnet.IgnoreEngin... method getData (line 412) | func (s *StatsCtx) getData(limit uint32) (resp *StatsResp, ok bool) { method dataFromUnits (line 439) | func (s *StatsCtx) dataFromUnits(units []*unitDB, curID uint32) (resp *S... method fillCollectedStats (line 483) | func (s *StatsCtx) fillCollectedStats(data *StatsResp, units []*unitDB, ... method fillCollectedStatsDaily (line 518) | func (s *StatsCtx) fillCollectedStatsDaily( function countHours (line 540) | func countHours(curHour uint32, days int) (n int) { function topClientPairs (line 551) | func topClientPairs(s *StatsCtx) (pg pairsGetter) { function topUpstreamsPairs (line 567) | func topUpstreamsPairs( function microsecondsToSeconds (line 603) | func microsecondsToSeconds(n float64) (r float64) { function prepareTopUpstreamsAvgTime (line 611) | func prepareTopUpstreamsAvgTime( FILE: internal/stats/unit_internal_test.go function TestUnit_Deserialize (line 10) | func TestUnit_Deserialize(t *testing.T) { function TestTopUpstreamsPairs (line 92) | func TestTopUpstreamsPairs(t *testing.T) { FILE: internal/updater/check.go constant versionCheckPeriod (line 20) | versionCheckPeriod = 8 * time.Hour type VersionInfo (line 23) | type VersionInfo struct constant maxVersionRespSize (line 34) | maxVersionRespSize datasize.ByteSize = 64 * datasize.KB method VersionInfo (line 38) | func (u *Updater) VersionInfo(ctx context.Context, forceRecheck bool) (v... method parseVersionResponse (line 77) | func (u *Updater) parseVersionResponse(ctx context.Context, data []byte)... method downloadURL (line 117) | func (u *Updater) downloadURL( function isMIPS (line 142) | func isMIPS(arch string) (ok bool) { FILE: internal/updater/check_test.go function TestUpdater_VersionInfo (line 18) | func TestUpdater_VersionInfo(t *testing.T) { function TestUpdater_VersionInfo_others (line 104) | func TestUpdater_VersionInfo_others(t *testing.T) { FILE: internal/updater/updater.go type Updater (line 33) | type Updater struct method Update (line 158) | func (u *Updater) Update(ctx context.Context, firstRun bool) (err erro... method logUpdateResult (line 205) | func (u *Updater) logUpdateResult(ctx context.Context, err error) { method NewVersion (line 216) | func (u *Updater) NewVersion() (nv string) { method prepare (line 224) | func (u *Updater) prepare(ctx context.Context) (err error) { method unpack (line 261) | func (u *Updater) unpack(ctx context.Context) (err error) { method check (line 284) | func (u *Updater) check(ctx context.Context) (err error) { method backup (line 325) | func (u *Updater) backup(ctx context.Context, firstRun bool) (err erro... method replace (line 347) | func (u *Updater) replace(ctx context.Context) (err error) { method clean (line 385) | func (u *Updater) clean(ctx context.Context) { method downloadPackageFile (line 398) | func (u *Updater) downloadPackageFile(ctx context.Context) (err error) { method unpackTarGzFile (line 438) | func (u *Updater) unpackTarGzFile( method unpackTarGz (line 502) | func (u *Updater) unpackTarGz( method unpackZipFile (line 546) | func (u *Updater) unpackZipFile( method unpackZip (line 604) | func (u *Updater) unpackZip( method copySupportingFiles (line 650) | func (u *Updater) copySupportingFiles( function DefaultVersionURL (line 74) | func DefaultVersionURL() *url.URL { type Config (line 83) | type Config struct function NewUpdater (line 133) | func NewUpdater(conf *Config) *Updater { constant MaxPackageFileSize (line 395) | MaxPackageFileSize = 32 * 1024 * 1024 function copyFile (line 631) | func copyFile(src, dst string, perm fs.FileMode) (err error) { FILE: internal/updater/updater_internal_test.go function TestUpdater_internal (line 19) | func TestUpdater_internal(t *testing.T) { function newCtx (line 125) | func newCtx(tb testing.TB) (ctx context.Context) { FILE: internal/updater/updater_test.go constant testTimeout (line 25) | testTimeout = 1 * time.Second function TestUpdater_Update (line 33) | func TestUpdater_Update(t *testing.T) { FILE: internal/version/norace.go constant isRace (line 5) | isRace = false FILE: internal/version/race.go constant isRace (line 5) | isRace = true FILE: internal/version/version.go constant ChannelBeta (line 17) | ChannelBeta = "beta" constant ChannelCandidate (line 18) | ChannelCandidate = "candidate" constant ChannelDevelopment (line 19) | ChannelDevelopment = "development" constant ChannelEdge (line 20) | ChannelEdge = "edge" constant ChannelRelease (line 21) | ChannelRelease = "release" function Channel (line 39) | func Channel() (v string) { constant vFmtFull (line 44) | vFmtFull = "AdGuard Home, version %s" function Full (line 47) | func Full() (v string) { function GOARM (line 52) | func GOARM() (v string) { function GOMIPS (line 58) | func GOMIPS() (v string) { function Version (line 63) | func Version() (v string) { function fmtModule (line 70) | func fmtModule(m *debug.Module) (formatted string) { constant vFmtAGHHdr (line 100) | vFmtAGHHdr = "AdGuard Home" constant vFmtVerHdr (line 101) | vFmtVerHdr = "Version: " constant vFmtSchemaVerHdr (line 102) | vFmtSchemaVerHdr = "Schema version: " constant vFmtChanHdr (line 103) | vFmtChanHdr = "Channel: " constant vFmtGoHdr (line 104) | vFmtGoHdr = "Go version: " constant vFmtTimeHdr (line 105) | vFmtTimeHdr = "Commit time: " constant vFmtRaceHdr (line 106) | vFmtRaceHdr = "Race: " constant vFmtGOOSHdr (line 107) | vFmtGOOSHdr = "GOOS: " + runtime.GOOS constant vFmtGOARCHHdr (line 108) | vFmtGOARCHHdr = "GOARCH: " + runtime.GOARCH constant vFmtGOARMHdr (line 109) | vFmtGOARMHdr = "GOARM: " constant vFmtGOMIPSHdr (line 110) | vFmtGOMIPSHdr = "GOMIPS: " constant vFmtDepsHdr (line 111) | vFmtDepsHdr = "Dependencies:" function Verbose (line 131) | func Verbose(schemaVersion uint) (v string) { function writeCommitTime (line 176) | func writeCommitTime(b *strings.Builder) { FILE: internal/whois/whois.go constant DefaultServer (line 28) | DefaultServer = "whois.arin.net" constant DefaultPort (line 31) | DefaultPort = 43 type Interface (line 35) | type Interface interface type Empty (line 42) | type Empty struct method Process (line 48) | func (Empty) Process(_ context.Context, _ netip.Addr) (info *Info, cha... type Config (line 53) | type Config struct type Default (line 88) | type Default struct method query (line 206) | func (w *Default) query(ctx context.Context, target, serverAddr string... method queryAll (line 242) | func (w *Default) queryAll(ctx context.Context, target string) (info m... method Process (line 287) | func (w *Default) Process(ctx context.Context, ip netip.Addr) (wi *Inf... method requestInfo (line 308) | func (w *Default) requestInfo( method findInCache (line 347) | func (w *Default) findInCache(ctx context.Context, ip netip.Addr) (wi ... function New (line 126) | func New(conf *Config) (w *Default) { function trimValue (line 143) | func trimValue(s string, max int) string { function isWHOISComment (line 152) | func isWHOISComment(data []byte) (ok bool) { function whoisParse (line 158) | func whoisParse(data []byte, maxLen int) (info map[string]string) { type Info (line 366) | type Info struct method Clone (line 373) | func (i *Info) Clone() (c *Info) { type cacheItem (line 386) | type cacheItem struct function toCacheItem (line 396) | func toCacheItem(info Info, ttl time.Duration) (item *cacheItem) { function fromCacheItem (line 405) | func fromCacheItem(item *cacheItem) (info *Info, expired bool) { FILE: internal/whois/whois_test.go function TestDefault_Process (line 18) | func TestDefault_Process(t *testing.T) { FILE: main.go function main (line 22) | func main() { FILE: main_next.go function main (line 18) | func main() { FILE: scripts/blocked-services/main.go function main (line 23) | func main() { constant tmplStr (line 79) | tmplStr = `// Code generated by go run ./scripts/blocked-services/main.g... type hlServices (line 118) | type hlServices struct type hlServicesService (line 125) | type hlServicesService struct type hlServicesGroup (line 135) | type hlServicesGroup struct FILE: scripts/translations/download.go method download (line 27) | func (c *twoskyClient) download(ctx context.Context, l *slog.Logger) { function parseDownloadArgs (line 72) | func parseDownloadArgs() (numWorker int, err error) { function printFailedLocales (line 87) | func printFailedLocales( type downloadWorker (line 109) | type downloadWorker struct method run (line 126) | func (w *downloadWorker) run() { type downloadRequest (line 119) | type downloadRequest struct function saveToFile (line 141) | func saveToFile( function getTranslation (line 178) | func getTranslation( function translationURL (line 210) | func translationURL(baseURL *url.URL, baseFile, projectID string, lang l... FILE: scripts/translations/main.go constant twoskyConfFile (line 29) | twoskyConfFile = "./.twosky.json" constant localesDirHome (line 30) | localesDirHome = "./client/src/__locales" constant defaultBaseFile (line 31) | defaultBaseFile = "en.json" constant srcDir (line 32) | srcDir = "./client/src" constant twoskyURI (line 33) | twoskyURI = "https://twosky.int.agrd.dev/api/v1" constant readLimit (line 35) | readLimit = 1 * datasize.MB constant uploadTimeout (line 36) | uploadTimeout = 20 * time.Second type langCode (line 56) | type langCode type languages (line 59) | type languages type textLabel (line 62) | type textLabel type locales (line 65) | type locales function main (line 67) | func main() { function usage (line 107) | func usage(addStr string) { function validateLanguageStr (line 137) | func validateLanguageStr(str string, all languages) (langs []langCode, e... function readLocales (line 156) | func readLocales(fn string) (loc locales, err error) { function summary (line 178) | func summary(langs languages) (err error) { function unused (line 219) | func unused(ctx context.Context, l *slog.Logger, basePath string) (err e... function findJS (line 237) | func findJS(ctx context.Context, l *slog.Logger, locDir string) (fileNam... function findUnused (line 266) | func findUnused(fileNames []string, loc locales) (err error) { function autoAdd (line 300) | func autoAdd(ctx context.Context, l *slog.Logger, basePath string) (err ... constant gitCmd (line 331) | gitCmd = "git" function handleAdds (line 334) | func handleAdds( function handleDels (line 357) | func handleDels( function changedLocales (line 382) | func changedLocales( FILE: scripts/translations/twosky.go constant twoskyProjectIdxHome (line 22) | twoskyProjectIdxHome = iota constant twoskyProjectIdxServices (line 26) | twoskyProjectIdxServices constant twoskyProjectCount (line 30) | twoskyProjectCount type twoskyConfig (line 35) | type twoskyConfig struct method Validate (line 46) | func (t *twoskyConfig) Validate() (err error) { function readTwoskyConfig (line 72) | func readTwoskyConfig() (home, services *twoskyConfig, err error) { type twoskyClient (line 102) | type twoskyClient struct function newTwoskyClient (line 121) | func newTwoskyClient(conf *twoskyConfig) (cli *twoskyClient, err error) { FILE: scripts/translations/upload.go method upload (line 21) | func (c *twoskyClient) upload() (err error) { function prepareMultipartMsg (line 48) | func prepareMultipartMsg( function send (line 94) | func send(uriStr, cType string, buf *bytes.Buffer) (err error) { FILE: scripts/vetted-filters/main.go function main (line 21) | func main() { constant jsHeader (line 105) | jsHeader = `// Code generated by go run ./scripts/vetted-filters/main.go... type hlFilters (line 112) | type hlFilters struct type hlFiltersFilter (line 117) | type hlFiltersFilter struct method category (line 135) | func (f *hlFiltersFilter) category() (cat string) { constant tagIDGeneral (line 127) | tagIDGeneral = 1 constant tagIDSecurity (line 128) | tagIDSecurity = 2 constant tagIDRegional (line 129) | tagIDRegional = 3 constant tagIDOther (line 130) | tagIDOther = 4 type aghFilters (line 154) | type aghFilters struct type aghFiltersCategory (line 161) | type aghFiltersCategory struct type aghFiltersFilter (line 168) | type aghFiltersFilter struct