hss:
  transport: "TCP"
  bind_ip: ["127.0.0.1"]
  bind_port: 3868
  OriginHost: "hss01"
  OriginRealm: "epc.mnc001.mcc001.3gppnetwork.org"
  ProductName: "pyHSS"
  site_name: "TTCN3"
  MCC: "001"
  MNC: "01"
  SLh_enabled: False
  #IMSI of Test Subscriber for Unit Checks (Optional)
  test_sub_imsi: '001021234567890'

  #The maximum time to wait, in seconds, before disconnecting a client when no data is received.
  client_socket_timeout: 120

  #The maximum time to wait, in seconds, before disconnecting a client when no data is received.
  client_socket_timeout: 300

  #The maximum time to wait, in seconds, before discarding a diameter request.
  diameter_request_timeout: 3

  # Whether to send a DWR to connected peers.
  send_dwr: False

  # How often to send a DWR to connected peers if enabled, in seconds.
  send_dwr_interval: 5

  #The amount of time, in seconds, before purging a disconnected client from the Active Diameter Peers key in redis.
  active_diameter_peers_timeout: 10

  #Prevent updates from being performed without a valid 'Provisioning-Key' in the header
  lock_provisioning: False

  #Provisioning Key for this HSS, alias for an API key. Required to be present in the header of requests to this HSS' api, if lock_provisioning is True.
  provisioning_key: "changeThisKeyInProduction"

  #If enabled sends CLRs to old MME when new MME attaches active sub
  CancelLocationRequest_Enabled: False

  #Workaround for some MMEs to force an Insert Subscriber Data request to be sent immediately after ULA
  Insert_Subscriber_Data_Force: False

  #Default Initial Filter Criteria for IMS Subscribers
  #Jinja Formatted Template, see the example for variables passed to it.
  Default_iFC: 'default_ifc.xml'

  #Default Sh User Data
  Default_Sh_UserData: 'default_sh_user_data.xml'

  #Whether to use an external socket service
  use_external_socket_service: False

  #The Redis key used to store active diameter peers
  diameter_peer_key: diameterPeers

  # Send requests via a DRA (if connected) when a given peer can't be found
  use_dra_fallback: False

  # How long an emergency subscriber entry will last for in the table before expiring, in minutes.
  emergency_subscriber_expiry: 3600

  # Whether to send a Delete Subscriber Data Request to the Old MME on an Update Location Request.
  send_dsr_on_mme_change: False

  # Static Identifier for the subscriber context with the Delete Subscriber Data Request.
  dsr_external_identifier: "example"

  # Whether to ignore Purge UE Requests - leaving the subscriber state with the last served mme instead of null.
  ignore_purge_ue_request: False

  #S-CSCF Pool
  scscf_pool:
    - 'scscf.ims.mnc001.mcc001.3gppnetwork.org'

  roaming:
    outbound:
      # Whether or not to a subscriber to connect to an undefined network when outbound roaming.
      allow_undefined_networks: True

  # SCTP Socket Parameters
  sctp:
    rtoMax: 5000
    rtoMin: 500
    rtoInitial: 1000

  gsup:
    bind_ip: "127.0.0.1"
    bind_port: 4222

api:
  page_size: 200
  # Whether or not to return key-based data when querying the AUC. Disable in production systems.
  enable_insecure_auc: False

benchmarking:
  # Whether to enable benchmark logging
  enabled: True
  # How often to report, in seconds. Not all benchmarking supports interval reporting.
  reporting_interval: 3600

eir:
  imsi_imei_logging: True    #Store current IMEI / IMSI pair in backend
  no_match_response: 2       #Greylist
  store_offnet_imsi: False  # Whether or not to store an IMEI / IMSI pair that doesn't exist in the AUC
  simSwapNotification: False # If the IMEI for a stored IMSI/IMEI combo changes, notify the webhook endpoint
  # Define an optional TAC csv file path
  #tac_database_csv: '/etc/pyhss/tac_database.csv'

logging:
  level: DEBUG
  logfiles:
    hss_logging_file: /dev/stdout
    diameter_logging_file: pyhss_diameter.log
    geored_logging_file: pyhss_geored.log
    metric_logging_file: pyhss_metrics.log
  sqlalchemy_sql_echo: False
  sqlalchemy_pool_recycle: 15
  sqlalchemy_pool_size: 30
  sqlalchemy_max_overflow: 0

## Database Parameters
database:
  db_type: sqlite
  server: 127.0.0.1
  username: dbeaver
  password: password
  database: pyhss.db
  readCacheEnabled: True
  readCacheInterval: 60

## External Webhook Notifications
webhooks:
  enabled: False
  endpoints:
    - 'http://127.0.0.1:8181'

### Notifications to OCS on Credit Control Requests
ocs:
  enabled: False
  endpoints:
    - 'http://127.0.0.1:8282'

## Geographic Redundancy Parameters
geored:
  enabled: False
  sync_actions: ['HSS', 'IMS', 'PCRF', 'EIR']    #What event actions should be synced
  endpoints:                         #List of PyHSS API Endpoints to update
    - 'http://hss01.mnc001.mcc001.3gppnetwork.org:8080'
    - 'http://hss02.mnc001.mcc001.3gppnetwork.org:8080'

#Redis is required to run PyHSS. An instance running on a local network is recommended for production.
redis:
  # Which connection type to attempt. Valid options are: tcp, unix, sentinel
  # tcp - Connection via a standard TCP socket to a given host and port.
  # unix - Connect to redis via a unix socket, provided by unixSocketPath.
  # sentinel - Connect to one or more redis sentinel hosts.
  connectionType: "tcp"
  unixSocketPath: '/var/run/redis/redis-server.sock'
  host: localhost
  port: 6379
  sentinel:
    masterName: exampleMaster
    hosts:
      - exampleSentinel.mnc001.mcc001.3gppnetwork.org:
        port: 6379
        password: ''


prometheus:
  enabled: False
  port: 8081    #If the API is run the API runs on the next port number up from this
  async_subscriber_count: False    #If enabled the subscriber count will be updated asynchronously for Prometheus

influxdb:
  enabled: False
  host: "127.0.0.1"
  port: 8086
  username: exampleUser
  password: examplePassword
  database: example

snmp:
  port: 1161
  listen_address: 127.0.0.1
