Commit 4990aa7fee0ff0d7cc34938a7e93e41fd8794993

Authored by Péter Szládovics
1 parent e56c67df

php8 support, bugfixes

README.md
1 1 # SMBind-ng
2   -v0.91c
  2 +v0.95d
3 3  
4 4 This is a forked project from [smbind](http://sourceforge.net/projects/smbind/).
5 5  
... ...
config/config.php-default
... ... @@ -18,4 +18,7 @@ $_CONF['nocaptcha'] = array (
18 18 $_CONF['path'] = '/path/of/your/zones';
19 19 $_CONF['conf'] = '/path/of/your/main/config';
20 20 $_CONF['rollerconf'] = '/path/of/your/rollrec/config';
  21 +$_CONF['namedcheckconf']= '/usr/bin/named-checkconf';
  22 +$_CONF['namedcheckzone']= '/usr/bin/named-checkzone';
  23 +$_CONF['rndc'] = '/usr/sbin/rndc';
21 24 ?>
... ...
lib/punycode.class.php
... ... @@ -50,7 +50,7 @@ class Punycode
50 50 $punycode_pieces = array();
51 51 foreach($pieces as $piece)
52 52 {
53   - if (preg_match("/[\x{80}-\x{FFFF}]/u", $piece))//is multi byte utf8
  53 + if (preg_match("/[\x[80]-\x{FFFF}]/u", $piece))//is multi byte utf8
54 54 {
55 55 $punycode_pieces[] = "xn--".self::encode($piece);
56 56 }
... ... @@ -344,11 +344,11 @@ class Punycode
344 344  
345 345 public static function uniord($c)//cousin of ord() but for unicode
346 346 {
347   - $ord0 = ord($c{0}); if ($ord0>=0 && $ord0<=127) return $ord0;
348   - $ord1 = ord($c{1}); if ($ord0>=192 && $ord0<=223) return ($ord0-192)*64 + ($ord1-128);
  347 + $ord0 = ord($c[0]); if ($ord0>=0 && $ord0<=127) return $ord0;
  348 + $ord1 = ord($c[1]); if ($ord0>=192 && $ord0<=223) return ($ord0-192)*64 + ($ord1-128);
349 349 if ($ord0==0xed && ($ord1 & 0xa0) == 0xa0) return false; //code points, 0xd800 to 0xdfff
350   - $ord2 = ord($c{2}); if ($ord0>=224 && $ord0<=239) return ($ord0-224)*4096 + ($ord1-128)*64 + ($ord2-128);
351   - $ord3 = ord($c{3}); if ($ord0>=240 && $ord0<=247) return ($ord0-240)*262144 + ($ord1-128)*4096 + ($ord2-128)*64 + ($ord3-128);
  350 + $ord2 = ord($c[2]); if ($ord0>=224 && $ord0<=239) return ($ord0-224)*4096 + ($ord1-128)*64 + ($ord2-128);
  351 + $ord3 = ord($c[3]); if ($ord0>=240 && $ord0<=247) return ($ord0-240)*262144 + ($ord1-128)*4096 + ($ord2-128)*64 + ($ord3-128);
352 352 return false;
353 353 }
354 354 public static function utf8($num)//cousin of ascii() but for utf8
... ... @@ -365,17 +365,17 @@ class Punycode
365 365 {
366 366 for ($i=0, $ix=strlen($string); $i < $ix; $i++)
367 367 {
368   - $c = ord($string{$i});
  368 + $c = ord($string[$i]);
369 369 if ($c==0x09 || $c==0x0a || $c==0x0d || (0x20 <= $c && $c < 0x7e) ) $n = 0; # 0bbbbbbb
370 370 else if (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
371   - else if ($c==0xed && (ord($string{$i+1}) & 0xa0)==0xa0) return false; //code points, 0xd800 to 0xdfff
  371 + else if ($c==0xed && (ord($string[$i+1]) & 0xa0)==0xa0) return false; //code points, 0xd800 to 0xdfff
372 372 else if (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
373 373 else if (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
374 374 //else if (($c & 0xFC) == 0xF8) $n=4; # 111110bb //byte 5, unnecessary in 4 byte UTF-8
375 375 //else if (($c & 0xFE) == 0xFC) $n=5; # 1111110b //byte 6, unnecessary in 4 byte UTF-8
376 376 else return false;
377 377 for ($j=0; $j<$n; $j++) { // n bytes matching 10bbbbbb follow ?
378   - if ((++$i == $ix) || ((ord($string{$i}) & 0xC0) != 0x80))
  378 + if ((++$i == $ix) || ((ord($string[$i]) & 0xC0) != 0x80))
379 379 return false;
380 380 }
381 381 }
... ...
lib/smbind.class.php
... ... @@ -12,7 +12,7 @@
12 12 define('TIMES_PATTERN', '/\s*(\d+\w?)\s+(\d+\w?)\s+(\d+\w?)\s+(\d+\w?)\s+(\d+\w?)/msi');
13 13 define('TXT_PATTERN', '/^\"(.*)\"/msi');
14 14 define('MX_PATTERN', '/^(\d+)\s+([^\s]*)/msi');
15   - define('TYPE_PATTERN', '(A|A6|AAAA|AFSDB|APL|ATMA|AXFR|CERT|CNAME|DNAME|DNSKEY|DS|EID|GPOS|HINFO|ISDN|IXFR|KEY|KX|LOC|MAILB|MINFO|MX|NAPTR|NIMLOC|NS|NSAP|NSAP-PTR|NSEC|NXT|OPT|PTR|PX|RP|RRSIG|RT|SIG|SINK|SRV|SSHFP|TKEY|TSIG|TXT|WKS|X25)');
  15 + define('TYPE_PATTERN', '(A|A6|AAAA|AFSDB|APL|ATMA|AXFR|CERT|CAA|CNAME|DNAME|DNSKEY|DS|EID|GPOS|HINFO|ISDN|IXFR|KEY|KX|LOC|MAILB|MINFO|MX|NAPTR|NIMLOC|NS|NSAP|NSAP-PTR|NSEC|NXT|OPT|PTR|PX|RP|RRSIG|RT|SIG|SINK|SRV|SSHFP|TKEY|TSIG|TXT|WKS|X25)');
16 16 define('RECORD_PATTERN', '/^([^\s]+)?(\s+[\d][\d\w]*)?(\s+IN)?\s+'.TYPE_PATTERN.'\s+([^\s].*$)/msi');
17 17 define('BIND_TIME_PATTERN', '/^(\d+)([smhdw])/');
18 18 define('IDN_PUNY_PATTERN', '/[^a-z0-9-]/i');
... ... @@ -220,8 +220,8 @@
220 220 $_CONF['nocaptcha'] = array();
221 221 $_CONF['path'] = "/etc/smbind-ng/zones/";
222 222 $_CONF['conf'] = "/etc/smbind-ng/smbind-ng.conf";
223   - $_CONF['namedcheckconf'] = (is_executable("/usr/sbin/named-checkconf")) ? "/usr/sbin/named-checkconf" : "";
224   - $_CONF['namedcheckzone'] = (is_executable("/usr/sbin/named-checkzone")) ? "/usr/sbin/named-checkzone" : "";
  223 + $_CONF['namedcheckconf'] = (is_executable("/usr/bin/named-checkconf")) ? "/usr/bin/named-checkconf" : "";
  224 + $_CONF['namedcheckzone'] = (is_executable("/usr/bin/named-checkzone")) ? "/usr/bin/named-checkzone" : "";
225 225 $_CONF['rndc'] = (is_executable("/usr/sbin/rndc")) ? "/usr/sbin/rndc" : "";
226 226 $_CONF['zonesigner'] = "/usr/sbin/zonesigner";
227 227 $_CONF['rollinit'] = "/usr/sbin/rollinit";
... ... @@ -495,14 +495,14 @@
495 495 $this->data['id'] = $ret['id'];
496 496 return true;
497 497 } else {
498   - $self->data['id'] = $aid['id'];
499   - $res = $this->db->query("SELECT * FROM users WHERE id = '" . $self->data['id'] . "'");
  498 + $this->data['id'] = $aid['id'];
  499 + $res = $this->db->query("SELECT * FROM users WHERE id = '" . $this->data['id'] . "'");
500 500 if (MDB2::isError($res)) {
501 501 $this->err .= $res->getMessage() . "\n" . $res->getDebugInfo();
502 502 error_log($this->err);
503 503 return false;
504 504 } elseif ($res->numRows() == 0) {
505   - $this->err .= "User not found with this id = " . $self->data['id'];
  505 + $this->err .= "User not found with this id = " . $this->data['id'];
506 506 error_log($this->err);
507 507 return false;
508 508 } else {
... ... @@ -655,9 +655,9 @@
655 655  
656 656 public function eraseUser() {
657 657 $this->loadUserZones();
658   - $mz =array();
  658 + $mz = array();
659 659 foreach ($this->mzones as $master) {
660   - $mz = new masterRecord($master);
  660 + $mz = new masterZone($master);
661 661 $mz->loadZoneHead();
662 662 $mzh = $mz->getZoneHead();
663 663 $mzh['owner'] = 1;
... ... @@ -667,7 +667,7 @@
667 667 $mz =array();
668 668 $sz =array();
669 669 foreach ($this->szones as $slave) {
670   - $sz = new slaveRecord($slave);
  670 + $sz = new slaveZone($slave);
671 671 $sz->loadZoneHead();
672 672 $szh = $sz->getZoneHead();
673 673 $szh['owner'] = 1;
... ... @@ -1907,13 +1907,13 @@
1907 1907 if (
1908 1908 ($this->head['sec_dns'] == '##EMPTY##') &&
1909 1909 ($parsed['type'] == 'NS') &&
1910   - ($parsed['destination'] != $self->head['pri_dns']) &&
  1910 + ($parsed['destination'] != $this->head['pri_dns']) &&
1911 1911 (
1912 1912 ($parsed['host'] == '@') ||
1913 1913 ($parsed['host'] == '')
1914 1914 )
1915 1915 ) {
1916   - $self->head['sec_dns'] == $parsed['destination'];
  1916 + $this->head['sec_dns'] == $parsed['destination'];
1917 1917 }
1918 1918 $this->records[] = $recd;
1919 1919 $recrow = '';
... ...
mysql.sql
... ... @@ -91,7 +91,7 @@ CREATE TABLE `options` (
91 91  
92 92 LOCK TABLES `options` WRITE;
93 93 /*!40000 ALTER TABLE `options` DISABLE KEYS */;
94   -INSERT INTO `options` VALUES ('A','record','on'),('A6','record','off'),('AAAA','record','off'),('AFSDB','record','off'),('APL','record','off'),('ATMA','record','off'),('AXFR','record','off'),('CERT','record','off'),('CNAME','record','on'),('DNAME','record','off'),('DNSKEY','record','off'),('DS','record','off'),('EID','record','off'),('GPOS','record','off'),('HINFO','record','off'),('hostmaster','normal','postmaster.your.ns'),('ISDN','record','off'),('IXFR','record','off'),('KEY','record','off'),('KX','record','off'),('LOC','record','off'),('MAILB','record','off'),('master','normal','0.0.0.0'),('MINFO','record','off'),('MX','record','on'),('NAPTR','record','off'),('NIMLOC','record','off'),('NS','record','on'),('NSAP','record','off'),('NSAP-PTR','record','off'),('NSEC','record','off'),('NXT','record','off'),('OPT','record','off'),('prins','normal','your.master.ns'),('PTR','record','off'),('PX','record','off'),('range','normal','10'),('RP','record','off'),('RRSIG','record','off'),('RT','record','off'),('secns','normal','your.sec.ns'),('SIG','record','off'),('SINK','record','off'),('SRV','record','on'),('SSHFP','record','off'),('TKEY','record','off'),('TSIG','record','off'),('TXT','record','on'),('WKS','record','off'),('X25','record','off');
  94 +INSERT INTO `options` VALUES ('A','record','on'),('A6','record','off'),('AAAA','record','off'),('AFSDB','record','off'),('APL','record','off'),('ATMA','record','off'),('AXFR','record','off'),('CAA','record','off'),('CERT','record','off'),('CNAME','record','on'),('DNAME','record','off'),('DNSKEY','record','off'),('DS','record','off'),('EID','record','off'),('GPOS','record','off'),('HINFO','record','off'),('hostmaster','normal','postmaster.your.ns'),('ISDN','record','off'),('IXFR','record','off'),('KEY','record','off'),('KX','record','off'),('LOC','record','off'),('MAILB','record','off'),('master','normal','0.0.0.0'),('MINFO','record','off'),('MX','record','on'),('NAPTR','record','off'),('NIMLOC','record','off'),('NS','record','on'),('NSAP','record','off'),('NSAP-PTR','record','off'),('NSEC','record','off'),('NXT','record','off'),('OPT','record','off'),('prins','normal','your.master.ns'),('PTR','record','off'),('PX','record','off'),('range','normal','10'),('RP','record','off'),('RRSIG','record','off'),('RT','record','off'),('secns','normal','your.sec.ns'),('SIG','record','off'),('SINK','record','off'),('SRV','record','on'),('SSHFP','record','off'),('TKEY','record','off'),('TSIG','record','off'),('TXT','record','on'),('WKS','record','off'),('X25','record','off');
95 95 /*!40000 ALTER TABLE `options` ENABLE KEYS */;
96 96 UNLOCK TABLES;
97 97  
... ...
pgsql.sql
... ... @@ -29,7 +29,7 @@ CREATE TABLE &quot;options&quot; (
29 29 UNIQUE ("prefkey")
30 30 );
31 31  
32   -INSERT INTO "options" VALUES ('A','record','on'),('A6','record','off'),('AAAA','record','off'),('AFSDB','record','off'),('APL','record','off'),('ATMA','record','off'),('AXFR','record','off'),('CERT','record','off'),('CNAME','record','on'),('DNAME','record','off'),('DNSKEY','record','off'),('DS','record','off'),('EID','record','off'),('GPOS','record','off'),('HINFO','record','off'),('hostmaster','normal','postmaster.your.ns'),('ISDN','record','off'),('IXFR','record','off'),('KEY','record','off'),('KX','record','off'),('LOC','record','off'),('MAILB','record','off'),('master','normal','0.0.0.0'),('MINFO','record','off'),('MX','record','on'),('NAPTR','record','off'),('NIMLOC','record','off'),('NS','record','on'),('NSAP','record','off'),('NSAP-PTR','record','off'),('NSEC','record','off'),('NXT','record','off'),('OPT','record','off'),('prins','normal','your.master.ns'),('PTR','record','off'),('PX','record','off'),('range','normal','10'),('RP','record','off'),('RRSIG','record','off'),('RT','record','off'),('secns','normal','your.sec.ns'),('SIG','record','off'),('SINK','record','off'),('SRV','record','on'),('SSHFP','record','off'),('TKEY','record','off'),('TSIG','record','off'),('TXT','record','on'),('WKS','record','off'),('X25','record','off');
  32 +INSERT INTO "options" VALUES ('A','record','on'),('A6','record','off'),('AAAA','record','off'),('AFSDB','record','off'),('APL','record','off'),('ATMA','record','off'),('AXFR','record','off'),('CAA','record','off'),('CERT','record','off'),('CNAME','record','on'),('DNAME','record','off'),('DNSKEY','record','off'),('DS','record','off'),('EID','record','off'),('GPOS','record','off'),('HINFO','record','off'),('hostmaster','normal','postmaster.your.ns'),('ISDN','record','off'),('IXFR','record','off'),('KEY','record','off'),('KX','record','off'),('LOC','record','off'),('MAILB','record','off'),('master','normal','0.0.0.0'),('MINFO','record','off'),('MX','record','on'),('NAPTR','record','off'),('NIMLOC','record','off'),('NS','record','on'),('NSAP','record','off'),('NSAP-PTR','record','off'),('NSEC','record','off'),('NXT','record','off'),('OPT','record','off'),('prins','normal','your.master.ns'),('PTR','record','off'),('PX','record','off'),('range','normal','10'),('RP','record','off'),('RRSIG','record','off'),('RT','record','off'),('secns','normal','your.sec.ns'),('SIG','record','off'),('SINK','record','off'),('SRV','record','on'),('SSHFP','record','off'),('TKEY','record','off'),('TSIG','record','off'),('TXT','record','on'),('WKS','record','off'),('X25','record','off');
33 33 CREATE TABLE "records" (
34 34 "id" integer NOT NULL,
35 35 "zone" integer NOT NULL DEFAULT '0',
... ...