///////////////////////////////////////////////////////////////////////////
//
// DNSBL - Spam IP address checker.
// Copyright (C) 2011 Alexey A.Znayev
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// Alexey A.Znayev, znaeff@mail.ru, http://xbsoft.org, http://xbsoft.ru
//
///////////////////////////////////////////////////////////////////////////
// This file contains public class DNSBL
// This class performs IP address check in spam blocking lists as described
// on http://ru.wikipedia.org/wiki/RBL
class DNSBL {
private $_aCheckers = array(
'spamhaus' => '.zen.spamhaus.org',
'spamcop' => '.bl.spamcop.net',
'dsbl' => '.list.dsbl.org',
'ordb' => '.relays.ordb.org',
'sorbs' => '.dnsbl.sorbs.net',
'njabl' => '.dnsbl.njabl.org'
); // AZ - key 'all' is illegal
private $_sDefaultChecker = 'spamhaus';
///////////////////////////////////////////////////////////////////////////
// CheckSpamIP - check IP for spam in checkers : given, default or all available (may be slow)
// parameters:
// string $ip - ip address
// string $checker - checker name or 'all' or nothing
// returns:
// true when IP exitsts in spam-lists of $checker or at least one of all checkers
// false when not or when ip address is local or not correct
// NOTE: method uses checkdnsrr(), this function is not available on Windows platforms in PHP < 5.3.0
public function CheckSpamIP($ip, $checker = ''){
if(empty($ip)) return false;
if(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $ip) != 1) return false;
$octets = explode('.', $ip);
if($octets[0] == '127') return false;
if($octets[0] == '10') return false;
if($octets[0] == '192' && $octets[0] == '168') return false;
if($octets[0] == '169' && $octets[0] == '254') return false; // ms windows
if((int)$octets[0] > 255 || (int)$octets[1] > 255 || (int)$octets[2] > 255 || (int)$octets[3] > 255 ) return false;
$ret_val = false;
$res_dns = array();
$PTR = implode(array_reverse($octets), '.');
//$type = 'A';
if($checker === 'all'){
foreach(array_values($this->_aCheckers) as $c){
//$ret_val = $ret_val || checkdnsrr($PTR . $c, $type);
$ret_val = $ret_val || $this->_CheckDNSAnswer(dns_get_record($PTR . $c, DNS_A));
if($ret_val) break;
}
}else if(array_key_exists($checker, $this->_aCheckers)){
//$ret_val = checkdnsrr($PTR . $this->_aCheckers[$checker], $type);
$ret_val = $this->_CheckDNSAnswer(dns_get_record($PTR . $this->_aCheckers[$checker], DNS_A));
}else{
//$ret_val = checkdnsrr($PTR . $this->_aCheckers[$this->_sDefaultChecker], $type);
$ret_val = $this->_CheckDNSAnswer(dns_get_record($PTR . $this->_aCheckers[$this->_sDefaultChecker], DNS_A));
}
return $ret_val;
}
///////////////////////////////////////////////////////////////////////////
// GetCheckers - gets list of available checker names
// returns:
// array of strings
public function GetCheckers(){
return array_keys($this->_aCheckers);
}
///////////////////////////////////////////////////////////////////////////
// GetDefaultChecker - gets default checker name
// returns:
// string
public function GetDefaultChecker(){
return $this->_sDefaultChecker;
}
///////////////////////////////////////////////////////////////////////////
// SetDefaultChecker - sets default checker name
// parameters:
// string $new_checker - new default checker name
// returns:
// true when success
// false when failed ($new_checker is not in the list of available checker names)
public function SetDefaultChecker($new_checker){
if(array_key_exists($new_checker, $this->_aCheckers)){
$this->_sDefaultChecker = $new_checker;
return true;
}else{
return false;
}
}
// private methods
///////////////////////////////////////////////////////////////////////////
// _CheckDNSAnswer - checks DNS-server answer for 127.0.0.* values
// returns:
// true when success
// false when failed
private function _CheckDNSAnswer($dns_answer){
if(!is_array($dns_answer)) return false;
$len = count($dns_answer);
if($len <= 0) return false;
for($i=0; $i<$len; $i++){
$obj = $dns_answer[$i];
if(!(is_object($obj) || is_array($obj))) return false;
$ip_str = $obj['ip'];
if(!is_string($ip_str)) return false;
$pos = strpos($ip_str, '127.0.0.');
if($pos !== false) return true;
}
return false;
}
} // end of class DNSBL
?>
Duplicati 2 als Windowsdienst installieren | blitsblog
Duplicate 2 als Dienst installieren. Dazu eine Eingabeaufforderunt (cmd) als Administrator starten und ins installationsverzeichnis wechseln (default: C:\Program Files\Duplicati 2) und folgenden Befehl eingeben:
damit wird Duplicati 2 als Dienst registriert, der Pfad für die Datenbank auf „C\Program Files\Duplicati 2\Data“ gelegt und der Webzugriff aus dem gesamten lokalen Netzwerk auf den Port 8200 ermöglicht.
Anschließend kann der Dienst „Duplicati service“ über die Windows-Dienste gestartet werden. Der Dienst läuft jetzt mit den berechtigungen des Systems. Sollte das immer noch nicht reichen, kann über die Einstellungen des Dienstes, ein Benutzer angegeben werden under dem der Dienst gestartet werden soll.
Nun kann über einen beliebigen Browser die Konfiguration angepasst werden. Über:
http://locahost:8200
die Duplicati 2 Adminkonsole öffnen und kontrollieren ob alle Backupaufträge vorhanden sind.
Nicht vergessen!!!Duplicati 2 aus dem Autostart entfernen, sofern man die Option nicht ohnehin bei der Installation schon entfernt hat. Normalerweise liegt die Autostart-Datei, in Windows 10, unter: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
Alle vorhandenen Backup am besten/einfachsten neu anlegen. Bei der Verwendung von Netzwerkfreigaben/NAS verwendet UNC-Pfade
Jeder Backupjob sollte in ein eigenes Unterverzeichnis am Ziel gelegt werden, damit die einzelnen Backups sich gegenseitig nicht stören.
Um das Backup von einem beliebigen PC im Netzwerk steuern und verwanten zu können muss in den erweiterten Firewalleinstellungen der Port (TCP 8200) freigegeben werden.