DDNS Updater Entwicklung & Fehlerbereinigung - Development & bugfixing

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
Einziger kosmetischer Schönheitsfehler: in der Hilfe werden (außer der Hauptüberschrift DDNS updater) die Titel der Unterkapitel / Unterseiten nicht angezeigt (IE, Firefox). Habe das Paket aktualisiert, nicht deinstalliert und erneut installiert - hängt es vielleicht damit zusammen?
Habe die Aktualisierung zuvor bei mir getestet und verlief einwandfrei. War das Paket Init_3rdpartyHelp auch gestartet? Der Indexer für die Hilfe wird mit diesem Paket gepatched.
Paket gestartet = Indexer gepatched
Paket gestoppt = Indexer normal
Ist der Indexer nicht gepatched, kann die Hilfe für 3rdparty Applikationen nicht installiert werden.
Falls daran noch gearbeitet wird, hätte ich noch folgenden (ebenfalls nur kosmetischen) Vorschlag: könnte man die Hostadressen in der Spalte "Hostname / ID" anklickbar machen?
Du möchtest per Klick auf die Seite des Hosters gelangen oder wofür genau?
Ansonsten nochmal ein dickes Lob: eine wirklich schöne und nützliche Erweiterung! Danke!
Gern geschehen. Bin immer froh, wenn ich zufriedene User lese und meine Arbeit nicht umsonst war :)
 
Hallo QTip,

mit dem init_3rdParty-Modul muss ich nochmal testen - im Paketmanagement steht zur Zeit "läuft"... - ach ich sehe gerade, Du meinst das init_3rdPartyHELP - hab ich glatt überlesen, ist aber auch zum Verwechseln ähnlich... (habe ich gar net installiert... schäm...)

Mit den Links meine ich einen Link auf die dort stehende meinname.dyndns.org Adresse (target=_blank), nur halt um zu gucken, ob meine Webseite auf der DS auch wirklich erreichbar ist...
 
Erst mal: Super geiles Tool, Danke für die Arbeit !!!

Evtl. habe ich es überlesen, aber kann ich jetzt die hauseigene DDNS Unterstützung deaktivieren und die dort eingetragenen Daten in den Updater übertragen?
 
Erst mal: Super geiles Tool, Danke für die Arbeit !!!

Evtl. habe ich es überlesen, aber kann ich jetzt die hauseigene DDNS Unterstützung deaktivieren und die dort eingetragenen Daten in den Updater übertragen?
Ja, wenn du möchtest, kannst den DDNS von Synology deaktivieren und deine Daten in den DDNS updater eintragen; ich zwinge Niemanden ;)
 
Ja, wenn du möchtest, kannst den DDNS von Synology deaktivieren und deine Daten in den DDNS updater eintragen; ich zwinge Niemanden ;)
Bei dem Thema fällt mir was ein: Synology verwendet ja für die Mails an Benutzer die DDNS-Adresse, die auch im hauseigenen Tool eingegeben sind. Könnte man da stattdessen eine andere Adresse eintragen? Ist bekannt wo das gespeichert wird?

MfG Matthieu
 
Bei dem Thema fällt mir was ein: Synology verwendet ja für die Mails an Benutzer die DDNS-Adresse, die auch im hauseigenen Tool eingegeben sind. Könnte man da stattdessen eine andere Adresse eintragen? Ist bekannt wo das gespeichert wird?

MfG Matthieu
Welche Mailadresse meinst du? Im Synology DDNS Dialog wird nur der DDNS Hostname angegeben. Meine Benachrichtigungsmails kommen immer über die Mailadresse, die ich unter Bedienfeld - Benach- richtig. eingegeben habe und hat nichts mit dem DDNS zu tun.
 
Tschuldigung. Ich meine die DDNS-Adresse, die jeder Nutzer zugeschickt bekommt, wenn das der Admin beim Anlegen so will. Also nicht die Mailadresse selbst, sondern das was man per Mail zugeschickt bekommt.

MfG Matthieu
 
Das macht der Dialog beim Erstellen des Benutzers selbst. Das Script schaut in /etc/synoinfo.conf nach dem Parameter "ddns_update". Wenn der Wert =yes lautet, dann wird der Wert für hostname aus /etc/ddns.conf geholt und in der Mail berücksichtigt. Eingreifen kann ich da leider nicht, da beim Setzen von ddns_update=yes automatisch der interne DDNS gestartet werden würde.
Ausser...man deaktiviert den Dienst für den eingebauten DDNS durch Umbenennung, damit er auch durch den Dialog nicht mehr gestartet werden kann. Dann ist zwar ein Haken für aktiviert zu sehen, das dürfte aber kein Problem darstellen.
Wenn das gewünscht ist, kann ich das versuchen so umzusetzen.
 
Warnung an alle Nutzer von DDNS-Updater:
Mir ist heute bei einem Stromausfall die gesamte Konfig von DDNS Updater verlogen gegangen. Also nutzt eine USV oder sichert die Konfig manuell noch einmal!

MfG Matthieu
 
Es existieren immer 2 Configs. Eine im DDNS updater Verzeichnis (Original) und Eine die beim Start vom DDNS updater nach /tmp/cache/ddclient (Kopie) kopiert wird. Die Datei im tmp ist natürlich nach einem Stromausfall oder nach einem Reboot nicht mehr vorhanden. Deshalb wird beim Start vom DDNS updater geprüft, ob sich einen Config in /tmp/cache/ddclient befindet. Bei negativem Ergebnis, wird die Config aus dem DDNS updater Verzeichnis kopiert.
Da die Config nur im Falle eine Neuanlage oder Änderung beschrieben wird, ist es sehr unwahrschlich, dass diese bei einem Stromausfall verschwindet (ausser es wurden grad Änderungen durchgeführt).
Bei einer Änderung wird zuerst das Original geändert und diese dann wieder nach tmp/... kopiert, hat also immer den gleichen Inhalt.

Schau mal bitte beim nächsten Mal vorher nach (oder schalt deine DS einfach aus), ob sich die Datei noch im DDNS updater Verzeichnis befindet.
 
Ich hab noch Version 1.10a in Betrieb, weil mir zum updaten bisher die Zeit fehlte. Kann das damit zusammenhängen?

MfG Matthieu
 
Ich hab noch Version 1.10a in Betrieb, weil mir zum updaten bisher die Zeit fehlte. Kann das damit zusammenhängen?

MfG Matthieu
Ja, das habe ich erst später geändert, genau wegen diesem Fall ;)
 
Ja, das habe ich erst später geändert, genau wegen diesem Fall ;)
Gut hätten wir das auch geklärt :D
Muss ich vor dem Update außer init_3rdparty_Help noch was installieren oder machen? Beim letzten Mal ist irgendwas schief gelaufen, daraufhin hab ich 1.10a wieder installiert.

MfG Matthieu
 
Gut hätten wir das auch geklärt :D
Muss ich vor dem Update außer init_3rdparty_Help noch was installieren oder machen? Beim letzten Mal ist irgendwas schief gelaufen, daraufhin hab ich 1.10a wieder installiert.

MfG Matthieu
Eine Aktualisierung sollte eigentlich funktionieren, ist jedenfalls in den Scripts so vorgesehen, dass die config gesichert und im Anschluss wiederhergestellt wird. Für den Fall der Fälle kannst du dir ja zuvor selbst ein Backup der ddclient.conf erstellen, da die 1.10a schon eine Weile her ist.
 
Irgendwas ist faul?!

Auch auf die Gefahr, dass ich mich zum Affen mach. Ich habe gerade den DDNS Updater installiert, habe wie vorgesehen auch horher die Hilfedatei draufgepackt.

Wenn ich ihn jetzt aber aufrufen will bekomme ich in erster Linie Codesalat. Sieht wie folgt aus. Was hab ich falsch gemacht?

<?php
// ****************************************************************** //
// * ddnsupdater - 3rdparty DDNS updater (webUI for ddclient) * //
// * Modul: ddnsupdater (index) * //
// * -------------------------------------- * //
// * Version 1.17 - 19/01/2011 * //
// * for more information check the changelog * //
// ******************************************************************* //
//$start = time();
putenv('HTTP_COOKIE='.$_SERVER['HTTP_COOKIE']);
putenv('REMOTE_ADDR='.$_SERVER['REMOTE_ADDR']);
$user = exec('/usr/syno/synoman/webman/modules/authenticate.cgi');
if ($user !== 'admin') {
header("HTTP/1.1 403 Forbidden");
exit("403 Forbidden");
}
$spkver = "1.17";
include_once("include/config.php");
if ($_GET["debug"] == 1) {
exec($ddnspath.'/ddnscmd.sh debug',$debugret);
print '<script type="text/javascript">window.open("/webman/3rdparty/ddnsupdater/ddnsdebug.zip","top=200,left=600,width=400,height=300")</script>';
print 'After you saved the debug file, you can close this window';
die;
}
include_once("include/get_provider.php");
exec('PATH="/opt/bin:/opt/sbin:$PATH"',$ret);
exec('/bin/ps | grep ddclient | grep -v grep', $ddnsstatus);
exec($ddnsbin.' --help | tail -n 5 | head -n 1 | cut -d " " -f 3-',$ddnsversion);
exec($ddnspath.'/ddnscmd.sh dsmversion 2>&1',$dsmversion);
exec($ddnspath.'/ddnscmd.sh dsmlanguage 2>&1',$dsmlanguage);
exec($ddnspath.'/ddnscmd.sh languages 2>&1',$ddnslanguages);
exec($ddnspath.'/ddnscmd.sh checkstart',$ddnsperl);
exec($ddnspath.'/ddnscmd.sh next-check 2>&1',$ddnscheck);
if ($ddnscheck[0] == "" && $ddnsstatus[0] == "") {
$sek = -1;
} elseif (intval($ddnscheck[0]) > 0 && $ddnsstatus != "") {
$checktext = "sleeping";
$sek = intval($ddnscheck[0]);
} elseif (intval($ddnscheck[0]) == 0 && $ddnsstatus != "") {
$checktext = "connecting";
$sek = 5;
}
if (file_exists($ddnsconffile)) {
$ddnsconfig = @file($ddnsconffile);
while ($z < count($ddnsconfig)) {
if ($begin == false && strstr($ddnsconfig[$z],"# DDNS Provider Parameters Section")) { // search for start of values
break;
} elseif ($begin == false && !strstr($ddnsconfig[$z],"##") && substr($ddnsconfig[$z],0,1) != chr(10)) {
$global_temp = explode("=",trim($ddnsconfig[$z]));
$conf_global[$global_temp[0]]=$global_temp[1];
}
$z++;
}
} else {
$conf_global['daemon'] = 0;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">
<link rel="stylesheet" type="text/css" href="extjs/resources/css/xtheme-gray.css">
<link rel="stylesheet" type="text/css" href="scripts/ddnsupdater.css">
<link rel="shortcut icon" href="favicon.ico">
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all.js"></script>
<script language="javascript" type="text/javascript">
function getUrlVars(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++){
hash = hashes.split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
function convert_iso2syno(searchlang) {
var langconv = Array();
langconv['de'] = 'ger'; //german
langconv['en'] = 'enu'; //english US
langconv['zh'] = 'chs'; //chinese simplified
langconv['cs'] = 'csy'; //czech
langconv['jp'] = 'jpn'; //japan
langconv['ko'] = 'krn'; //korean
langconv['da'] = 'dan'; //danish
langconv['fr'] = 'fre'; //french
langconv['it'] = 'ita'; //italian
langconv['nl'] = 'nld'; //dutch
langconv['no'] = 'nor'; //norwegian
langconv['pl'] = 'plk'; //polish
langconv['ru'] = 'rus'; //russian
langconv['sp'] = 'spn'; //spanish
langconv['sv'] = 'sve'; //swedish
langconv['hu'] = 'hun'; //hungarian
langconv['tr'] = 'trk'; //turkish
langconv['pt'] = 'ptg'; //portuguese european
if (langconv[searchlang] != '' && langconv[searchlang] != undefined){
return langconv[searchlang];
} else {
return 'enu';
}
}
function convert_syno2iso(searchlang) {
var langconv = Array();
langconv['ger'] = 'de'; //german
langconv['enu'] = 'en'; //english US
langconv['chs'] = 'zh'; //chinese simplified
langconv['csy'] = 'cs'; //czech
langconv['jpn'] = 'jp'; //japan
langconv['krn'] = 'ko'; //korean
langconv['dan'] = 'da'; //danish
langconv['fre'] = 'fr'; //french
langconv['ita'] = 'it'; //italian
langconv['nld'] = 'nl'; //dutch
langconv['nor'] = 'no'; //norwegian
langconv['plk'] = 'pl'; //polish
langconv['rus'] = 'ru'; //russian
langconv['spn'] = 'sp'; //spanish
langconv['sve'] = 'sv'; //swedish
langconv['hun'] = 'hu'; //hungarian
langconv['trk'] = 'tr'; //turkish
langconv['ptg'] = 'pt'; //portuguese european
if (langconv[searchlang] != '' && langconv[searchlang] != undefined){
return langconv[searchlang];
} else {
return 'en';
}
}
var language = '<?php print $dsmlanguage[0];?>';
var urllang = getUrlVars()['lang'];
if (urllang != undefined && urllang != '') {
var ddnslang = convert_iso2syno(urllang);
} else if (language == 'def') {
if (navigator.appName == 'Netscape') {
var language = navigator.language.substr(0,2);
} else {
var language = navigator.browserLanguage.substr(0,2);
}
var ddnslang = convert_iso2syno(language);
} else if (language == undefined || language == '') {
ddnslang = 'enu';
} else {
ddnslang = language;
}

document.write('<script type="text/javascript" src="extjs/locale/ext-lang-' + convert_syno2iso(ddnslang) + '.js"\></script\>');
document.write('<script type="text/javascript" src="scripts/ddnsupdater.js"\></script\>');
document.write('<script type="text/javascript" src="help/enu/gui.js"\></script\>');
document.write('<script type="text/javascript" src="help/' + ddnslang + '/gui.js"\></script\>');
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="pragma" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="cache-control" content="no-cache">
</head><title>DDNS updater</title><body>
<!--[if lt IE 7]><style>
/* style for IE 6 + IE5.5 + IE5.0 */
.gainlayout { height: 0; }
</style><![endif]-->
<!--[if IE 7]><style>
.gainlayout { zoom: 1;}
</style><![endif]-->
<script type="text/javascript" src="scripts/functions.js"></script>
<script language="javascript" type="text/javascript">
document.getElementsByTagName("body")[0].style.cursor = 'auto';
var intervaltime=<?php echo $conf_global['daemon'];?>;
var checktext='<?php echo $checktext;?>';
var sek=<?php echo $sek;?>;
var spkver='<?php echo $spkver;?>';
var ddclientver='<?php print $ddnsversion[0];?>';
var use_ssl = '<?php print $ddnsperl[0];?>';
var dsmversion = '<?php print $dsmversion[0];?>';
var languages = '<?php for($i=0;$i<count($ddnslanguages);$i++){print $ddnslanguages[$i]." ";}?>';
<?php if (count($provider_protocol) == 0) get_provider();
reset($provider_name);
$providerstore = "\nExt.namespace('Ext.provider');\n";
$providerstore .= "Ext.provider.names = [\n";
$protocolstore = "\nExt.namespace('Ext.protocol');\n";
$protocolstore .= "Ext.protocol.names = [\n";
$pc = 0;
while(list($protocolname,$providername) = each($provider_name)) {
$providerstore .= "['".$protocolname."','".$providername."','".$provider_server[$protocolname]."'],\n";
if ($pc < count($provider_protocol)) $protocolstore .= "['".$protocolname."','".$provider_comment[$protocolname]."'],\n";
$pc++;
}
$providerstore = substr($providerstore,0,-2)."\n";
$protocolstore = substr($protocolstore,0,-2)."\n";
$providerstore .= "];\n";
$protocolstore .= "];\n";
print $providerstore;
print $protocolstore;
?>
</script>
<div id="ddnsmain"></div><div style="display:none"><div id="spkversionstext">SPK version <?php print $spkver;?></div></div>
<?php //echo date("s",time() - $start);?>
</body></html>
 
Dir fehlt "init_3rdparty.spk". Gibts auch hier im Forum von itari. Das ist Voraussetzung für fast alle Community-Anwendungen.

MfG Matthieu
 
Guten tag friends,

Ich spreche und ich verstehe Deutch aber nicht sehr gut :)

So if anyone can answer me in english i would like to ask a question. I have installed everything correct and everything is working just fine. Is there any way that i can start this program automatically ?? (Due to some power failure i have to manually start the DS and therefore the program).

Many thanks for the great support and work.
Antony.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat