====== DNA Helper ====== The DNA Helper interface is a mechanism that allows the [[Serval DNA]] daemon to invoke an external executable (typically a script) whenever it receives a [[DNA]] **Lookup** query. The queried [[DID]] is passed to the script's standard input, which can respond on standard output with zero or more [[URI]]s which tell the requestor how to call the requested number. All valid output URIs are returned to the DNA requestor in addition to any URI returned by [[Serval DNA]] itself. The interface was designed to tolerate all kinds of script behaviour and misbehaviour by imposing a timeout on each invocation and using escalating signals to kill scripts that run for too long. The script's standard error is echoed to the [[Serval DNA log]] to aid development and diagnosis of scripts. The script's output is carefully parsed to ensure it conforms to the allowed responses. Any malformed output is logged but not sent. The DNA Helper interface was designed and implemented in mid 2012 as part of the [[:content:activity:naf1]], in order to implement [[Commotion OpenBTS]].