SYMBOL INDEX (227 symbols across 41 files) FILE: build.rs function main (line 2) | fn main() { FILE: migrations/20240222234126_filterlists.sql type filterLists (line 1) | CREATE TABLE IF NOT EXISTS filterLists ( FILE: migrations/20240224194439_rules.sql type Rules (line 2) | CREATE TABLE IF NOT EXISTS Rules ( FILE: migrations/20240224195223_filter_list_contents.sql type filterLists (line 5) | CREATE TABLE IF NOT EXISTS filterLists ( FILE: migrations/20240224203224_list_rules.sql type list_rules (line 2) | CREATE table list_rules ( FILE: migrations/20240225230839_index.sql type rule_index (line 2) | create unique index rule_index on Rules(rule) FILE: migrations/20240225231841_index.sql type list_rules_index (line 2) | create index list_rules_index on list_rules(list_id, rule_id) FILE: migrations/20240225232249_index.sql type list_rules_index_list_id (line 4) | create index list_rules_index_list_id on list_rules(list_id) type list_rules_index_rule_id (line 5) | create index list_rules_index_rule_id on list_rules(rule_id) FILE: migrations/20240226013547_source.sql type rule_source (line 2) | CREATE TABLE rule_source ( type idx_rule_source_source (line 7) | CREATE INDEX idx_rule_source_source ON rule_source (source) FILE: migrations/20240226152939_temp.sql type temp_rule_source (line 2) | CREATE TABLE temp_rule_source ( FILE: migrations/20240226223817_domain_rules.sql type domain_rules (line 2) | CREATE TABLE domain_rules ( type domain_rules_idx_domain (line 6) | CREATE INDEX domain_rules_idx_domain ON domain_rules (domain) FILE: migrations/20240227191530_drop_column.sql type temp_rule_source (line 2) | CREATE TEMPORARY TABLE temp_rule_source(source TEXT UNIQUE, rule_id INTE... FILE: migrations/20240228001134_domain_rules.sql type temp_domain_rules (line 12) | CREATE TEMPORARY TABLE temp_domain_rules ( FILE: migrations/20240228004601_extend_rules.sql type unknown_rules (line 7) | CREATE TABLE unknown_rules ( FILE: migrations/20240228164553_ip.sql type ip_rules (line 2) | CREATE TABLE ip_rules ( FILE: migrations/20240229210101_domains.sql type domains (line 2) | CREATE TABLE domains ( type domain_rules (line 17) | CREATE TABLE domain_rules ( FILE: migrations/20240229212527_subdomains.sql type subdomains (line 12) | CREATE TABLE subdomains ( FILE: migrations/20240301000455_more_indexes.sql type rule_source_rule_idx (line 2) | CREATE INDEX rule_source_rule_idx ON rule_source (rule_id) type domain_rules_domain_idx (line 3) | CREATE INDEX domain_rules_domain_idx ON domain_rules (domain_id) FILE: migrations/20240301000900_subdomain_idx.sql type subdomain_domain_idx (line 2) | CREATE INDEX subdomain_domain_idx ON subdomains (domain_id) type subdomain_parent_idx (line 4) | CREATE INDEX subdomain_parent_idx ON subdomains (parent_domain_id) FILE: migrations/20240301030213_subdomain_inde.sql type domain_rules_subdomain_idx (line 2) | CREATE INDEX domain_rules_subdomain_idx ON domain_rules (subdomain) FILE: migrations/20240302192658_index.sql type domains_processed_subdomains_idx (line 2) | CREATE INDEX domains_processed_subdomains_idx ON domains(processed_subdo... FILE: migrations/20240302194037_domain_rule_id_idx.sql type rules_domain_rule_id_idx (line 2) | CREATE INDEX rules_domain_rule_id_idx ON rules(domain_rule_id) FILE: migrations/20240302222401_dns.sql type domains_last_checked_dns_idx (line 7) | CREATE INDEX domains_last_checked_dns_idx ON domains(last_checked_dns) type dns_ips (line 9) | CREATE TABLE dns_ips ( type dns_ips_domain_id_idx (line 14) | CREATE INDEX dns_ips_domain_id_idx ON dns_ips(domain_id) type dns_ips_ip_address_idx (line 16) | CREATE INDEX dns_ips_ip_address_idx ON dns_ips(ip_address) type dns_cnames (line 18) | CREATE TABLE dns_cnames ( type dns_cnames_domain_id_idx (line 23) | CREATE INDEX dns_cnames_domain_id_idx ON dns_cnames(domain_id) type dns_cnames_cname_domain_id_idx (line 25) | CREATE INDEX dns_cnames_cname_domain_id_idx ON dns_cnames(cname_domain_id) FILE: migrations/20240305200551_rule_matches.sql type rule_matches (line 2) | CREATE TABLE rule_matches ( type rule_matches_rule_id_idx (line 8) | CREATE INDEX rule_matches_rule_id_idx ON rule_matches (rule_id) type rule_matches_domain_id_idx (line 9) | CREATE INDEX rule_matches_domain_id_idx ON rule_matches (domain_id) FILE: migrations/20240306214217_index.sql type rules_last_checked_matches_idx (line 2) | CREATE INDEX rules_last_checked_matches_idx ON rules (last_checked_matches) FILE: migrations/20240307005702_lists.sql type allow_domains (line 2) | CREATE TABLE allow_domains ( type block_domains (line 6) | CREATE TABLE block_domains ( FILE: migrations/20240307012450_index.sql type domain_rules_allow_idx (line 2) | CREATE INDEX domain_rules_allow_idx ON domain_rules (allow) type ip_rules_allow_idx (line 3) | CREATE INDEX ip_rules_allow_idx ON ip_rules (allow) FILE: migrations/20240307031445_idx.sql type ip_rules_network_idx (line 2) | CREATE INDEX ip_rules_network_idx ON ip_rules (ip_network) FILE: src/app.rs function App (line 15) | pub fn App() -> impl IntoView { function Loading (line 80) | pub fn Loading() -> impl IntoView { FILE: src/domain.rs type DomainId (line 19) | pub struct DomainId(i64); type DomainParseError (line 22) | pub enum DomainParseError { method fmt (line 29) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { method from (line 35) | fn from(_: addr::error::Error) -> Self { method from (line 41) | fn from(_: hickory_proto::error::ProtoError) -> Self { type Domain (line 48) | pub struct Domain(Arc); method type_info (line 52) | fn type_info() -> sqlx::postgres::PgTypeInfo { method compatible (line 56) | fn compatible(ty: &sqlx::postgres::PgTypeInfo) -> bool { method array_type_info (line 62) | fn array_type_info() -> sqlx::postgres::PgTypeInfo { method array_compatible (line 66) | fn array_compatible(ty: &sqlx::postgres::PgTypeInfo) -> bool { method encode_by_ref (line 72) | fn encode_by_ref(&self, buf: &mut sqlx::postgres::PgArgumentBuffer) ->... method as_ref (line 78) | fn as_ref(&self) -> &str { type Err (line 84) | type Err = DomainParseError; method from_str (line 85) | fn from_str(domain: &str) -> Result { function valid_domain (line 115) | fn valid_domain() { function invalid_domain (line 127) | fn invalid_domain() { function makes_lowercase (line 140) | fn makes_lowercase() { function parse_lookup_result (line 154) | fn parse_lookup_result( type Resolver (line 201) | type Resolver = Arc< type Task (line 210) | type Task = (DomainId, Domain); type DomainResolver (line 214) | pub struct DomainResolver { method new (line 231) | pub fn new(token: CancellationToken) -> Result { method run (line 282) | pub async fn run(&self) -> Result<(), ServerFnError> { method domain_selector (line 323) | async fn domain_selector(&self) -> Result<(), ServerFnError> { method run_task (line 391) | async fn run_task( method write_to_db (line 434) | async fn write_to_db(&self) -> Result<(), ServerFnError> { function get_dns_result (line 549) | async fn get_dns_result( function DnsResultView (line 580) | fn DnsResultView(domain: Domain) -> impl IntoView { function get_blocked_by (line 652) | async fn get_blocked_by( function BlockedBy (line 701) | fn BlockedBy(get_domain: Box Result>) -... function get_subdomains (line 748) | async fn get_subdomains(domain: String) -> Result, ServerFnE... function DisplaySubdomains (line 765) | fn DisplaySubdomains(get_domain: Box Result impl IntoView { FILE: src/error_template.rs type AppError (line 6) | pub enum AppError { method status_code (line 12) | pub fn status_code(&self) -> StatusCode { function ErrorTemplate (line 22) | pub fn ErrorTemplate( FILE: src/fileserv.rs function file_and_error_handler (line 13) | pub async fn file_and_error_handler( function get_static_file (line 29) | async fn get_static_file(uri: Uri, root: &str) -> Result,... FILE: src/filterlist.rs type ListId (line 18) | pub struct ListId(i32); type FilterListRecord (line 21) | pub struct FilterListRecord { type FilterListUrl (line 33) | pub struct FilterListUrl { method as_str (line 38) | pub fn as_str(&self) -> &str { method to_internal_path (line 41) | pub fn to_internal_path(&self) -> Option { type Target (line 51) | type Target = str; method deref (line 52) | fn deref(&self) -> &Self::Target { type Err (line 58) | type Err = url::ParseError; method from_str (line 59) | fn from_str(s: &str) -> Result { type FilterListType (line 72) | pub enum FilterListType { method as_str (line 87) | pub fn as_str(&self) -> &'static str { type Err (line 113) | type Err = InvalidFilterListTypeError; method from_str (line 114) | fn from_str(s: &str) -> Result { type InvalidFilterListTypeError (line 104) | pub struct InvalidFilterListTypeError; method fmt (line 107) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { type FilterListMap (line 133) | pub struct FilterListMap( type DomainRule (line 139) | pub struct DomainRule { type IpRule (line 146) | pub struct IpRule { type Rule (line 152) | pub enum Rule { type RulePair (line 165) | pub struct RulePair { method new (line 171) | pub fn new(source: Arc, rule: Rule) -> RulePair { method get_rule (line 174) | pub fn get_rule(&self) -> &Rule { method get_source (line 177) | pub fn get_source(&self) -> &Arc { method from (line 187) | fn from((source, rule): (Arc, Rule)) -> Self { function from (line 182) | fn from(val: RulePair) -> Self { function parse_lines (line 193) | fn parse_lines(contents: &str, parser: &dyn Fn(&str) -> Option) ->... function parse_domain_list_line (line 211) | fn parse_domain_list_line(line: &str, allow: bool, subdomain: bool) -> O... function parse_domain_list (line 239) | fn parse_domain_list(contents: &str, allow: bool, subdomain: bool) -> Ve... function parse_adblock_line (line 246) | fn parse_adblock_line(line: &str) -> Option { function parse_adblock (line 362) | fn parse_adblock(contents: &str) -> Vec { function parse_regex_line (line 367) | fn parse_regex_line(line: &str) -> Option { function parse_ip_network_line (line 389) | fn parse_ip_network_line(line: &str, allow: bool) -> Option { function parse_ip_network_list (line 402) | fn parse_ip_network_list(contents: &str, allow: bool) -> Vec { function parse_regex (line 407) | fn parse_regex(contents: &str) -> Vec { function parse_unknown_lines (line 412) | fn parse_unknown_lines(contents: &str) -> Vec { function parse_list_contents (line 417) | pub fn parse_list_contents(contents: &str, list_format: FilterListType) ... function parse_list (line 436) | pub async fn parse_list(url: FilterListUrl) -> Result<(), ServerFnError> { type CsvRecord (line 644) | struct CsvRecord { function load_filter_map (line 654) | pub async fn load_filter_map() -> Result<(), ServerFnError> { function watch_filter_map (line 702) | pub async fn watch_filter_map() -> Result<(), ServerFnError> { function write_filter_map (line 724) | pub async fn write_filter_map() -> Result<(), ServerFnError> { function get_filter_map (line 753) | pub async fn get_filter_map() -> Result { type LastVersionData (line 781) | struct LastVersionData { function get_last_version_data (line 787) | async fn get_last_version_data( function get_last_updated (line 810) | pub async fn get_last_updated( type UpdateListError (line 820) | enum UpdateListError { function update_list (line 826) | pub async fn update_list(url: FilterListUrl) -> Result<(), ServerFnError> { function delete_list (line 930) | pub async fn delete_list(url: FilterListUrl) -> Result<(), ServerFnError> { function FilterListLink (line 950) | pub fn FilterListLink(url: FilterListUrl) -> impl IntoView { function get_list_size (line 966) | async fn get_list_size(url: FilterListUrl) -> Result, Serv... function ListSize (line 1003) | pub fn ListSize(url: FilterListUrl, list_size: Option) -> impl In... function get_list_page (line 1030) | async fn get_list_page( function LastUpdatedInner (line 1084) | fn LastUpdatedInner(last_updated: Option>)... function LastUpdated (line 1098) | pub fn LastUpdated(url: FilterListUrl, record: Option)... function ParseList (line 1137) | pub fn ParseList(url: FilterListUrl) -> impl IntoView { function FilterListUpdate (line 1150) | pub fn FilterListUpdate(url: FilterListUrl) -> impl IntoView { function Contents (line 1163) | fn Contents(url: FilterListUrl, page: Option) -> impl IntoView { function FilterListInner (line 1223) | fn FilterListInner(url: FilterListUrl, page: Option) -> impl Into... type ViewListParams (line 1273) | struct ViewListParams { method parse (line 1289) | fn parse(&self) -> Result { type ViewListError (line 1279) | enum ViewListError { function DeleteListButton (line 1299) | fn DeleteListButton(url: FilterListUrl) -> impl IntoView { function FilterListPage (line 1312) | pub fn FilterListPage() -> impl IntoView { FILE: src/home_page.rs function FilterListSummary (line 6) | fn FilterListSummary(url: FilterListUrl, record: FilterListRecord) -> im... function HomePage (line 48) | pub fn HomePage() -> impl IntoView { FILE: src/ip_view.rs function get_domans_which_resolve_to_ip (line 8) | async fn get_domans_which_resolve_to_ip( function DomainsWhichResolveTo (line 29) | fn DomainsWhichResolveTo(get_ip: GetIp) -> impl IntoView { type GetIp (line 74) | type GetIp = Box Result>; type IpParam (line 77) | struct IpParam { function IpView (line 82) | pub fn IpView() -> impl IntoView { FILE: src/lib.rs constant PAGE_SIZE (line 21) | const PAGE_SIZE: usize = 50; type SourceId (line 26) | pub struct SourceId(i32); type DbInitError (line 30) | pub enum DbInitError { method from (line 38) | fn from(e: sqlx::Error) -> Self { method from (line 45) | fn from(e: std::env::VarError) -> Self { function hydrate (line 55) | pub fn hydrate() { FILE: src/main.rs type Config (line 6) | struct Config { method default (line 12) | fn default() -> Self { type Args (line 24) | struct Args { function main (line 34) | async fn main() { function main (line 152) | pub fn main() { FILE: src/rule.rs type RuleId (line 13) | pub struct RuleId(i32); method get_href (line 16) | pub fn get_href(&self) -> String { function find_rule_matches (line 22) | pub async fn find_rule_matches() -> Result<(), ServerFnError> { function get_rule (line 99) | pub async fn get_rule(id: RuleId) -> Result { type GetId (line 138) | type GetId = Box Result>; function get_sources (line 141) | async fn get_sources( function Sources (line 169) | fn Sources(get_id: GetId) -> impl IntoView { function DisplayRule (line 221) | pub fn DisplayRule(rule: Rule) -> impl IntoView { function RuleRawView (line 246) | fn RuleRawView( function get_rule_blocked_domains (line 264) | async fn get_rule_blocked_domains(id: RuleId) -> Result Result Result { type RuleParam (line 373) | struct RuleParam { function RuleViewPage (line 378) | pub fn RuleViewPage() -> impl IntoView { FILE: src/server.rs function get_db (line 20) | pub async fn get_db() -> Result { function parse_missing_subdomains (line 31) | pub async fn parse_missing_subdomains() -> Result<(), ServerFnError> { function check_dns (line 108) | pub async fn check_dns(token: CancellationToken) -> Result<(), ServerFnE... function import_pihole_logs (line 114) | pub async fn import_pihole_logs() -> Result<(), ServerFnError> { function update_expired_lists (line 166) | pub async fn update_expired_lists() -> Result<(), ServerFnError> { function build_list (line 189) | pub async fn build_list() -> Result<(), ServerFnError> { function garbage_collect_rule_source (line 258) | async fn garbage_collect_rule_source(pool: &sqlx::PgPool) -> Result Result Result Result<(), ServerFnError> { function run_cmd (line 312) | pub async fn run_cmd(token: CancellationToken) -> Result<(), ServerFnErr... constant CERTSTREAM_URL (line 329) | const CERTSTREAM_URL: &str = "wss://certstream.calidog.io/domains-only"; type CertStreamMessage (line 332) | struct CertStreamMessage { function stream_certstream (line 336) | async fn stream_certstream( function write_certstream (line 355) | async fn write_certstream( function certstream (line 394) | pub async fn certstream(token: CancellationToken) -> Result<(), ServerFn... function dns_results (line 408) | async fn dns_results(State(peer_state): State) {} type Peer (line 411) | pub struct Peer { method default (line 417) | fn default() -> Self { type PeerState (line 426) | pub struct PeerState { method new (line 440) | pub fn new(peers: &[Peer]) -> Self { type PeerError (line 430) | enum PeerError { function get_peer_router (line 445) | pub fn get_peer_router(peer_state: PeerState) -> axum::Router Result { function TotalRuleCount (line 19) | fn TotalRuleCount() -> impl IntoView { function get_total_rule_matches (line 32) | async fn get_total_rule_matches() -> Result { function TotalRuleMatches (line 47) | fn TotalRuleMatches() -> impl IntoView { function get_domain_count (line 60) | async fn get_domain_count() -> Result { function DomainCount (line 75) | fn DomainCount() -> impl IntoView { function get_subdomains_count (line 87) | async fn get_subdomains_count() -> Result { function SubdomainCount (line 102) | fn SubdomainCount() -> impl IntoView { function get_dns_ip_count (line 115) | async fn get_dns_ip_count() -> Result { function DnsIpCount (line 130) | fn DnsIpCount() -> impl IntoView { function get_dns_cname_count (line 143) | async fn get_dns_cname_count() -> Result { function DnsCnameCount (line 158) | fn DnsCnameCount() -> impl IntoView { function StatsView (line 171) | pub fn StatsView() -> impl IntoView { FILE: src/tasks.rs type Task (line 3) | trait Task { method name (line 5) | fn name(&self) -> &str; method run_once (line 6) | async fn run_once(&self) -> Result; type Error (line 13) | type Error = ServerFnError; method name (line 14) | fn name(&self) -> &str { method run_once (line 17) | async fn run_once(&self) -> Result { type GarbageCollectRuleSource (line 9) | struct GarbageCollectRuleSource {} function register_task (line 34) | async fn register_task(_task: T) { function TaskView (line 39) | pub fn TaskView() -> impl IntoView {