30.06.14: "Störung" bei den dynamischen IP's von NOIP.com

Begonnen von Raven, 01 Juli 2014, 11:07:43

Vorheriges Thema - Nächstes Thema

herrmannj

ZitatÜber die jahre habe ich allerlei dyn DNS Services durch, und verwende heute nur noch ein eigenes Script auf meinem webspace, das ich per cronjob aktualisiere

Oh ja, gern. Ich verwende no-ip um meinen echten (1und1) dns auf meinen dsl zeigen zulassen. (subdomain -> no-ip -> dsl). Ich wüste spontan garnicht wie ich den dns scripten kann...  ???

Im großen und ganzen finde ich es btw allerdings eine riesige Frechheit was sich a: der zuständige Richter und b: MS da leisten. UNGLAUBLICH !

MS soll sich mal um die Sicherheit der eigenen Software kümmern - frechheit !

Das aber nur am Rande

Danke und Grüße
Jörg

epsrw1

#16
ZitatWelche Anforderungen werden dafür gebraucht..?

der client benötigt wget oder ein anderes vergleichbares programm das per cron aufgerufen wird und die URL auf dem webspace aufruft.

der server benötigt php + mysql, sowie sinnvollerweise verzeichnisschutz für Deinen externen zugang.

der router muß portweiterleitung eingerichtet haben.

ich bring das mal eben etwas ins reine und stelle es dann hier ein.
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

#17
quick and dirty ist das .... erschlagt mich nicht für die unsaubere arbeit ;)) kein richtiger DNS natürlich, aber zielführend für die sehr einfache aufgabe.

file: dyndns.php wird per cron aufgerufen und setzt den datenbankeintrag mit der aktuellen ip. bei mir ist das jede minute eingestellt.
<?php

// file: dyndns.php
// lastchange: 2014-07-01

$db_user="username";
$db_server="localhost";
$db_pw="password";
$db_name="databasename";
if(!
mysql_connect($db_server$db_user$db_pw)){
print " erreur access Mysql<br>";
exit;
}
if(!
mysql_select_db($db_name)){
print " erreur choix base de données<br>";
exit;
}
unset(
$db_user,$db_server,$db_pw,$db_name);

if(isset(
$_GET['query']) and $_GET['query']=='set'){
$req_last=mysql_query("SELECT id,ip FROM DYNDNS ORDER BY id DESC LIMIT 1");
$res_last=mysql_fetch_array($req_last);
if($res_last['ip']==$_SERVER['REMOTE_ADDR']){
mysql_query("UPDATE DYNDNS SET timestamp=NOW() WHERE id='".$res_last['id']."' LIMIT 1") or die("update error");
}else{
mysql_query("INSERT INTO DYNDNS SET timestamp=NOW(),ip='".$_SERVER['REMOTE_ADDR']."'") or die("insert errorr");
}
echo 'Set: '.$_SERVER['REMOTE_ADDR']. ' successful.';
}elseif(isset(
$_GET['query']) and $_GET['query']=='get'){
$q=mysql_query("SELECT * FROM DYNDNS ORDER BY id DESC LIMIT 1") or die("select error");
$r=mysql_fetch_array($q) or die('mysql_fetch_array error');
echo $r['ip'];
}else{
echo '<html><head><title>dyndns.php</title></head><body><pre>';
$q=mysql_query("SELECT * FROM DYNDNS ORDER BY id DESC LIMIT 1") or die("select error");
$r=mysql_fetch_array($q) or die('mysql_fetch_array error');
echo $r['id']."\n";
echo $r['timestamp']."\n";
echo $r['ip']."\n";
echo '</pre></html>';
}

?>



file: index.php befindet sich bei mir in einem ordner der über simplen apache-verzeichnisschutz gesichert ist.
<?php

// file: fhem/index.php -> fhem FD internal dyndns frame redirect

$db_user="username";
$db_server="localhost";
$db_pw="password";
$db_name="databasename";
if(!
mysql_connect($db_server$db_user$db_pw)){
print " erreur access Mysql<br>";
exit;
}
if(!
mysql_select_db($db_name)){
print " erreur choix base de données<br>";
exit;
}
unset(
$db_user,$db_server,$db_pw,$db_name);

$req_last=mysql_query("SELECT id,ip FROM DYNDNS ORDER BY id DESC LIMIT 1") or die("req.err: ".mysql_error());
$res_last=mysql_fetch_array($req_last);

$port='8083';
if(isset(
$_GET['type'])){
if($_GET['type']=='phone'){
$port='8084';
}elseif($_GET['type']=='tablet'){
$port='8085';
}
}

echo 
"<html><head><title>FHEM dynamic IP access</title></head>\n";

echo 
"<frameset rows=\"100%\">\n<frame src=\"http://".$res_last['ip'].':'.$port."/fhem\" title=\"\" frameborder=\"0\" noresize=\"noresize\"/>";

echo 
"<noframes><bod<><p>Ihr Browser kann diese Seite leider nicht anzeigen! Goto to URL
<a href=\"http://"
.$res_last['ip'].':'.$port."/fhem\">http://".$res_last['ip']
.
" manually.</a></p></body></noframes>\n";

echo 
"</frameset></html>\n";


file: dyndns.sql für die anlage der tabelle. habe ein paar beispieldaten dringelassen damit man sich was darunter vorstellen kann.
-- Status:1:93:MP_0:dbasename:php:1.24.3:dyndns table:5.0.95:1:::utf8:EXTINFO
--
-- TABLE-INFO
-- TABLE|DYNDNS|93|4912|2014-07-01 19:26:01|MyISAM
-- EOF TABLE-INFO
--
-- Dump by MySQLDumper 1.24.3 (http://mysqldumper.net)
/*!40101 SET NAMES 'utf8' */;
SET FOREIGN_KEY_CHECKS=0;
-- Dump created: 2014-07-01 19:26

--
-- Create Table `DYNDNS`
--

DROP TABLE IF EXISTS `DYNDNS`;
CREATE TABLE `DYNDNS` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `timestamp` datetime NOT NULL,
  `ip` varchar(15) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6534 DEFAULT CHARSET=utf8;

--
-- Data for Table `DYNDNS`
--

/*!40000 ALTER TABLE `DYNDNS` DISABLE KEYS */;
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6443','2014-04-07 01:10:01','91.3.124.248');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6415','2014-04-05 19:43:10','91.3.123.239');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6442','2014-04-06 01:09:01','91.3.123.239');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6444','2014-04-08 01:10:01','91.33.86.181');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6445','2014-04-09 01:10:01','91.3.126.111');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6446','2014-04-10 01:10:01','91.3.119.116');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6447','2014-04-11 01:10:01','91.33.92.117');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6448','2014-04-12 01:10:01','91.33.80.40');
INSERT INTO `DYNDNS` (`id`,`timestamp`,`ip`) VALUES ('6449','2014-04-13 01:10:01','91.33.93.160');
/*!40000 ALTER TABLE `DYNDNS` ENABLE KEYS */;

SET FOREIGN_KEY_CHECKS=1;
-- EOB



mag das jemand testen + dokumentieren (wiki) ? dann würde es sich auch lohnen die lösung noch etwas aufzupolieren.
LG, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel