Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email?
pfSense Forum
Retired
»
2.0-RC Snapshot Feedback and Problems - RETIRED
»
Custom Dynamic DNS
Username:
Password:
1 Hour
1 Day
1 Week
1 Month
Forever
Home
Help
Search
Login
Register
Pages: [
1
]
2
Go Down
« previous
next »
Print
Author
Topic: Custom Dynamic DNS (Read 6916 times)
0 Members and 1 Guest are viewing this topic.
BlueMatt
Jr. Member
Offline
Posts: 44
Custom Dynamic DNS
«
on:
August 20, 2010, 02:08:04 pm »
There are hundreds of services which require an always updated IP Address that use a custom php script (or similar) that users have to call to have their IP updated.
Although many of them can and have been added to the dynamic dns section in the services tab, there will always be many that are not there.
Is there any way a "Custom DDNS" service can be added?
ie. Call this URL with this parameter set to the new IP Address, and log output unless it is the following.
Should be pretty simple to implement but would allow many other Dynamic IP Services.
Thanks for the great project,
Matt
Logged
ermal
Administrator
Hero Member
Offline
Posts: 3097
Re: Custom Dynamic DNS
«
Reply #1 on:
August 20, 2010, 02:13:20 pm »
Patches accepted.
Logged
softking
Newbie
Offline
Posts: 1
Re: Custom Dynamic DNS
«
Reply #2 on:
September 08, 2010, 02:13:36 pm »
Yes i would like the same thing, I use EveryDNS as a service (
http://www.everydns.com/
) and would like pfsense to do the updating...
thanks
Logged
jimp
Administrator
Hero Member
Offline
Posts: 12863
Re: Custom Dynamic DNS
«
Reply #3 on:
September 09, 2010, 07:29:53 am »
If they publish an API or some kind of spec on doing remote updates, it might be possible.
I added support for
namecheap.com
's DynDNS a week or two ago and it didn't take much, but they used a different API than any other DynDNS provider we had.
Given the vast differences in how providers update, I doubt any generic method would be feasible and reliable.
EDIT: Looks like everydns wouldn't be too hard to add, based on
http://www.everydns.com/eDNS.pl
- someone could probably work similar code into our dyndns.class without too much effort.
«
Last Edit: September 09, 2010, 07:37:26 am by jimp
»
Logged
Need help fast?
Commercial Support
!
Co-Author of
pfSense: The Definitive Guide
. - Check the
Doc Wiki
for FAQs.
Do not PM for help!
Donate to the project
|
My Wish List
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #4 on:
September 09, 2010, 10:29:42 am »
Yes, you are correct that there are vast differences in how providers update, however they all follow a fairly common set of rules.
Usually something like send a request to URL "
http://provider/update.php?username=un&password=Pa
$$Key&ip=" then simply add the ip to the end and call fetch or php's http_get. The results shouldn't be too hard to generate rules for. Usually something very constant with maybe a date, or IP.
It really shouldn't be that hard to code, I might try to write something this weekend if I have time.
Logged
jimp
Administrator
Hero Member
Offline
Posts: 12863
Re: Custom Dynamic DNS
«
Reply #5 on:
September 09, 2010, 10:54:52 am »
Some do, yes. But their return codes vary wildly not only in text but also how they are delivered, and part of properly functioning dyndns updates is being able to detect successful updates and error conditions.
So it might be doable, but it would require a bit of work to make sure it worked properly. :-)
Logged
Need help fast?
Commercial Support
!
Co-Author of
pfSense: The Definitive Guide
. - Check the
Doc Wiki
for FAQs.
Do not PM for help!
Donate to the project
|
My Wish List
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #6 on:
September 09, 2010, 11:09:12 am »
Quote from: jimp on September 09, 2010, 10:54:52 am
Some do, yes. But their return codes vary wildly not only in text but also how they are delivered, and part of properly functioning dyndns updates is being able to detect successful updates and error conditions.
So it might be doable, but it would require a bit of work to make sure it worked properly. :-)
Absolutely, but limited support is better than none.
I see nothing wrong with simply making the user enter a string like "IP Updated to: %IP" and check that the output exactly matches that string and the return code is 200, other wise assume a problem, log it and try again in a couple of minutes.
Logged
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #7 on:
September 09, 2010, 11:19:25 am »
The way I see it there are two easy ways to implement support for Custom DNS:
1. Write it into the current Dyndns scripts in pfSense.
2. Use a prebuild dyndns program like
http://www.inatech.eu/inadyn/
: The one used by DD-WRT Firmwares to include custom dns.
Although I think option 1 is a much better option, option 2 might allow for better support. Some (few) DDNS Providers support DD-WRT and have instructions on how to add it, and using the same program would guarantee that the same configuration will work.
I wouldn't mind doing option 1, but it might take me a while to get around to it.
Logged
jimp
Administrator
Hero Member
Offline
Posts: 12863
Re: Custom Dynamic DNS
«
Reply #8 on:
September 09, 2010, 11:31:25 am »
Doing it in pfSense may not be that hard - the code for dyndns isn't that hard to get around, it's easy to copy/paste and adjust.
Adding some GUI bits for a "custom" option wouldn't be too difficult for someone who knows PHP, HTML and JavaScript.
Logged
Need help fast?
Commercial Support
!
Co-Author of
pfSense: The Definitive Guide
. - Check the
Doc Wiki
for FAQs.
Do not PM for help!
Donate to the project
|
My Wish List
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #9 on:
September 09, 2010, 11:41:21 am »
Quote from: jimp on September 09, 2010, 11:31:25 am
Doing it in pfSense may not be that hard - the code for dyndns isn't that hard to get around, it's easy to copy/paste and adjust.
Adding some GUI bits for a "custom" option wouldn't be too difficult for someone who knows PHP, HTML and JavaScript.
In that case, I'll go ahead and start working on it, though I might not have much time in the next week, so it might be a while before I can get around to finishing it.
Logged
jimp
Administrator
Hero Member
Offline
Posts: 12863
Re: Custom Dynamic DNS
«
Reply #10 on:
September 09, 2010, 11:57:36 am »
Sure. Most of the code you'd need to look at is in /etc/inc/dyndns.class and /usr/local/www/services_dyndns.php
Logged
Need help fast?
Commercial Support
!
Co-Author of
pfSense: The Definitive Guide
. - Check the
Doc Wiki
for FAQs.
Do not PM for help!
Donate to the project
|
My Wish List
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #11 on:
September 09, 2010, 03:48:55 pm »
The attached patches work, although the GUI could be done a bit nicer.
Just
Code:
patch -R /usr/local/www/services_dyndns.php < services_dyndns.php.txt
patch -R /usr/local/www/services_dyndns_edit.php < services_dyndns_edit.php.txt
patch -R /etc/inc/dyndns.class < dyndns.class.txt
patch -R /etc/inc/services.inc < services.inc.txt
Notes:
Currently, the cache file used is {$g['conf_path']}/dyndns_{$dyndns['interface']}{$dyndns['type']}.cache, which will result in a shared cache file for any two DDNS settings on the same provider, this might cause problems for people with multiple Custom Entries.
The GUI of the current version states that freeDNS does not require a username, but the script currently requires it. Can someone with experience with freeDNS comment as to whether or not freeDNS requires a username.
dyndns.class does not currently check that the server returned a sensible HTTP Status, only that the match string is equal.
Also, it would be nice to eventually allow multiple match strings.
Logged
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #12 on:
September 10, 2010, 01:53:29 pm »
Version 2:
Much better GUI, and multiple match strings.
Patches now go the right direction, so just install the patches with
Code:
patch /usr/local/www/services_dyndns.php < services_dyndns.php.txt
patch /usr/local/www/services_dyndns_edit.php < services_dyndns_edit.php.txt
patch /etc/inc/dyndns.class < dyndns.class.txt
patch /etc/inc/services.inc < services.inc.txt
Tested to work with tunnelbroker.net on the latest snapshot.
Notes:
Currently, the cache file used is {$g['conf_path']}/dyndns_{$dyndns['interface']}{$dyndns['type']}.cache, which will result in a shared cache file for any two DDNS settings on the same provider, this might cause problems for people with multiple Custom Entries.
The GUI of the current version states that freeDNS does not require a username, but the script currently requires it. Can someone with experience with freeDNS comment as to whether or not freeDNS requires a username.
dyndns.class does not currently check that the server returned a sensible HTTP Status, only that the match string is equal.
Logged
jimp
Administrator
Hero Member
Offline
Posts: 12863
Re: Custom Dynamic DNS
«
Reply #13 on:
September 10, 2010, 01:55:58 pm »
I haven't had a chance to test this (been a busy day) but it looks promising.
You could get the ID of the dyndns instance and append that to the name after the dyndns type perhaps, to make it more precise.
Logged
Need help fast?
Commercial Support
!
Co-Author of
pfSense: The Definitive Guide
. - Check the
Doc Wiki
for FAQs.
Do not PM for help!
Donate to the project
|
My Wish List
BlueMatt
Jr. Member
Offline
Posts: 44
Re: Custom Dynamic DNS
«
Reply #14 on:
September 10, 2010, 06:17:03 pm »
Version 3:
Allows for custom script execution on update failure,
Allows for requests to originate from an interface other than the one monitored (useful to call LAN scripts on update),
Uses a unique id in cache and debug files.
Once again patch with
Code:
patch /usr/local/www/services_dyndns.php < services_dyndns.php.txt
patch /usr/local/www/services_dyndns_edit.php < services_dyndns_edit.php.txt
patch /etc/inc/dyndns.class < dyndns.class.txt
patch /etc/inc/services.inc < services.inc.txt
Issues:
The GUI of the current version states that freeDNS does not require a username, but the script currently requires it. Can someone with experience with freeDNS comment as to whether or not freeDNS requires a username.
dyndns.class does not currently check that the server returned a sensible HTTP Status, only that the match string is equal.
When an entry is deleted, the script rechecks all interfaces and removes all cache files, it should gracefully move all cache files to the appropriate new ID number.
Logged
Pages: [
1
]
2
Go Up
Print
« previous
next »
Jump to:
Please select a destination:
-----------------------------
Administrative
-----------------------------
=> Forum rules
=> Messages from the pfSense Team
=> Feedback
-----------------------------
pfSense English Support
-----------------------------
=> Installation and Upgrades
=> General Questions
=> 2.1 Snapshot Feedback and Problems
=> Post a bounty
===> Completed Bounties
===> Expired/Withdrawn Bounties
=> Hardware
=> Firewalling
=> NAT
=> CARP/VIPs
=> Routing and Multi WAN
=> Traffic Shaping
=> DHCP and DNS
=> IPv6
=> IPsec
=> PPTP
=> PPPoE Server
=> Captive Portal
=> webGUI
=> Wireless
=> SNMP
=> Packages
=> Virtualization installations and techniques
=> OpenVPN
=> Gaming
-----------------------------
Development/Documentation
-----------------------------
=> Documentation
=> Development
-----------------------------
General Category
-----------------------------
=> General Discussion
-----------------------------
International Support
-----------------------------
=> Indonesian
=> Deutsch
=> Español
=> Français
=> Italiano
=> Russian
=> Nederlands
=> Norwegian
=> Portuguese
=> Polish
=> Romanian
=> Swedish
=> Turkish
-----------------------------
Retired
-----------------------------
=> 1.2.3-PRERELEASE-TESTING snapshots - RETIRED
=> 1.2.1-RC Snapshot Feedback and Problems-RETIRED
=> 2.0-RC Snapshot Feedback and Problems - RETIRED
=> DNS Server testing area - RETIRED
Loading...