#20894: Ddns Script Errors When Curl Installed in Alternate Root
--------------------------+------------------------
 Reporter:  anonymous     |      Owner:  developers
     Type:  defect        |     Status:  new
 Priority:  normal        |  Milestone:
Component:  packages      |    Version:  Trunk
 Keywords:  ddns-scripts  |
--------------------------+------------------------
 ON MY SYSTEM, I HAVE A USB DRIVE WHICH I USE FOR INSTALLING ADDON PACKAGES
 DUE TO THE SPACE LIMITATIONS OF THE ROOT FILE SYSTEM..  THIS CAUSED
 SEVERAL ISSUES WITH THE DDNS-SCRIPTS DUE TO CURL BEING INSTALLED IN THIS
 ALTERNATE ROOT LOCATION.  PLEASE CONSIDER THESE ISSUES AND SEE IF THE
 SCRIPTS CAN BE IMPROVED TO HANDLE THIS USECASE.

 FOR EXAMPLE, I INSTALLED CURL WITH SOMETHING SIMILAR TO BELOW WHICH
 INSTALLS ALL THE CURL PARTS TO /mnt/usb.

 opkg -e usb curl

 1) THE BELOW ABSOLUTE PATHS IN THE FUNCTION SCRIPTS PREVENTED THE LOGOIC
 FROM RECOGNIZING THAT CURL IS AVAILABLE ON THE SYSTEM..  TO GET THIS TO
 WORK, I HAD TO MANUALLY SYM LINK MY CURL TO THE ROOT (E.G. ln -s
 /mnt/usb/usr/bin/curl /usr/bin/curl) SINCE OPKG DOESN'T DO THIS
 AUTOMAGICALLY.  YOU MAY WANT TO DO VALIDATIONS AGAINST JUST THE BINARY
 NAME AND ALLOW THE PATH RESOLUTION TO FIND THE EXECUTABLE (E.G -x curl)

 # grep curl /usr/lib/ddns/dynamic_dns_functions.sh
 USE_CURL=$(uci -q get ddns.global.use_curl) || USE_CURL=0
 [ -x /usr/bin/curl ] || USE_CURL=0
         elif [ -x /usr/bin/curl ]; then
                 __PROG="/usr/bin/curl -RsS -o $DATFILE --stderr $ERRFILE"
                         grep -i "all_proxy" /usr/lib/libcurl.so*
 >/dev/null 2>&1 || \
                                 write_log 13 "cURL: libcurl compiled
 without Proxy support"

 2) ONCE I GOT CURL RECOGNIZED, I WOULD GET THE BELOW ERRORS.  BUT I WOULD
 ONLY GET THIS ERROR WHEN RUNNING THE SERVICE VIA THE INIT.D FUNCTION.
 RUNNING VIA THE COMMAND LINE, IT WORKED FINE..

 194452  WARN : Transfer failed - retry 15/0 in 60 seconds
  194552       : #> /usr/bin/curl -RsS -o /var/run/ddns/dnsomatic.dat
 --stderr /var/run/ddns/dnsomatic.err --noproxy '*'
 'http://myip.dnsomatic.com/'
  194552 ERROR : cURL Error: '16'

 I FINALLY FIGURED IT OUT AS BEING THERE ARE CURL LIBRARIES INSTALLED IN
 THE ALTERNATE ROOT DIRECTORY..  I HAD TO ADD THE BELOW EXPORT TO THE
 SCRIPT..

 # vi /usr/lib/ddns/dynamic_dns_updater.sh
 #!/bin/sh
 #.Distributed under the terms of the GNU General Public License (GPL)
 version 2.0
 #.Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 export LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/usb/usr/lib
 [ $# -lt 1 -o -n "${2//[0-3]/}" -o ${#2} -gt 1 ] && {

 I HAVE THE APPROPRIATE LD_LIBRARY_PATH CONFIGURED IN /etc/profile BUT IT
 DOESN'T APPEAR THAT THE SERVICE SCRIPT UTILIZES THE PROFILE SCRIPT TO
 SETUP THE ENVIRONMENT?  NOT SURE IF THIS IS A BUG IN THE SERVICE SCRIPTS
 OR THIS SHOULD BE DONE MANUALLY IN THE DDNS SCRIPT?

--
Ticket URL: <https://dev.openwrt.org/ticket/20894>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets

Reply via email to