DirectSlave/GO 3 - public beta

roman_m

Verified User
Joined
May 5, 2005
Messages
193
Location
Ukraine, Kiev
Original DirectSlave thread: http://forum.directadmin.com/showthread.php?t=43924

==================================================================================
UPDATE: DirectSlave Updated to version 3.4.2-Advanced!

BUGFIX: pid file was not written when running under Linux systemd (reported by frog9394, forum thread )
+ SIGHUP now handled correctly. On SIGHUP DirectSlave reopens log files and reload configured SSL/TLS certificates (if any)
+ Automatic update notification added. No autodownload/autoinstall available.
+ Added systemd service file - /usr/local/directslave/etc/systemd/directslave.service
· pprof debugger is still listening on http://127.0.0.1:2223/

Warning: Debug version with pprof debugger enabled.

· pprof debugger is listening on http://127.0.0.1:2223/ (localhost only)

If you aquire high memory usage (>50Mb) of directslave binary throug the time, please do
curl http://127.0.0.1:2223/debug/pprof/heap > heap.dump
and send me a heap.dump file to [email protected]

Please update -- https://directslave.com/download/Latest.tar.gz
MD5: e2b24d9954f19e56a24b67f281d40a10
Size: 21040582 bytes

(see https://directslave.com/download)

All versions in one place -- https://directslave.com/

Web interface demo available -- https://directslave.com:2224 demo:demo123

For updating, see this post http://forum.directadmin.com/showthread.php?t=54992&page=2&p=289070#post289070
==================================================================================

Hi everybody!

A long time ago in a galaxy far far away ...
I was released a DirectSlave software. Many of forum users helped me a lot to debug and improve DS and bring this software to really corporate production level.

But now, it's time for something new!

So, I proudly introduce you a new DirectSlave/GO (GO - because it's writen in GoLang and setup is easy as 1.. 2.. 3.. GO!):

+ Binary!
+ Rock solid
+ Statically linked
+ Cross-platform
+ TLS 1.2 and HTTP/2 onboard
+ /CMD_EMAIL_POP support
+ Less memory footprint (can be used on tiny virtual instances with < 512Mb RAM)
+ Less CPU usage
+ A lot of improvements in speed
+ No more dependencies / perl modules
+ Setup is easy as 1.. 2.. 3.. GO!
+ Available for Linux i386/x32_64/arm & FreeBSD i386/amd64 (all in single archive distribution).

Download it here -- https://regme.in/download/directslave-3.0.2-beta-all.tar.gz

First time installing: see README
Updating from 2.x: see UPDATING

Also, feel free to contact me.

Have a nice expirience with brand new DirectSlave/GO!

1.. 2.. 3.. GO!
 
Last edited:
Feel free to use it, but remember - this is a beta, so in kind of any bugs all the reports are welcome!
 
Hi,

Just installed it on Ubuntu 16.04.

run /usr/local/directslave/bin/directslave --check everything is OK

After create test.com domain on DA for testing, only /etc/named/secondary/named.conf file created, there is no test.com.db zone file.

error.log
Code:
2017/07/07 19:16:51 DEBUG: &{Method:POST URL:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com Proto:HTTP/1.0 ProtoMajor:1 ProtoMinor:0 Header:map[Authorization:[Basic YWRtaW46R2lARHV5NzI3NQ==] Content-Length:[867]] Body:0xc420019f40 GetBody:<nil> ContentLength:867 TransferEncoding:[] Close:true Host: Form:map[action:[rawsave] domain:[test.com]] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr:104.207.135.112:52941 RequestURI:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc4200e7980}
2017/07/07 19:16:51 DEBUG: &{Method:POST URL:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com Proto:HTTP/1.0 ProtoMajor:1 ProtoMinor:0 Header:map[Authorization:[Basic YWRtaW46R2lARHV5NzI3NQ==] Content-Length:[1356]] Body:0xc4201803c0 GetBody:<nil> ContentLength:1356 TransferEncoding:[] Close:true Host: Form:map[domain:[test.com] action:[rawsave]] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr:104.207.135.112:60540 RequestURI:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc4200e7e90}
2017/07/07 19:16:57 exit status 1

action.log
Code:
2017/07/07 19:16:50 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:50 Checking test.com from 104.207.135.112
2017/07/07 19:16:50 Domain test.com not exists
2017/07/07 19:16:50 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:50 Checking test.com from 104.207.135.112
2017/07/07 19:16:50 Domain test.com not exists
2017/07/07 19:16:51 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:51 Domain test.com added with primary 104.207.135.112
2017/07/07 19:16:51 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:51 Reloaded test.com from master 104.207.135.112
2017/07/07 19:16:57 RNDC queue triggered with 2 events
2017/07/07 19:16:57 RNDC output:

access.log
Code:
2017/07/07 19:16:50 [104.207.135.112] "GET /CMD_API_DNS_ADMIN?action=exists&domain=test.com HTTP/1.0"
2017/07/07 19:16:50 [104.207.135.112] "GET /CMD_API_DNS_ADMIN?action=exists&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
 
CentOS 7:
Trying to run directslave --password, but I am getting:

DEBUG: Running as root (0), dropping privileges to 25:25
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x596ca4]

goroutine 1 [running]:
log.(*Logger).Output(0x0, 0x2, 0xc4200422d0, 0x41, 0x0, 0x0)
/usr/local/go/src/log/log.go:149 +0x54
log.(*Logger).Fatal(0x0, 0xc4200379a0, 0x1, 0x1)
/usr/local/go/src/log/log.go:188 +0x6a
main.UpdatePasswordFile()
/export/store/Project/home/golang/directslave/directslave.go:860 +0x247
main.RunWithOption(0x7fffa6eff793, 0xa)
/export/store/Project/home/golang/directslave/directslave.go:283 +0x22f
main.main()
/export/store/Project/home/golang/directslave/directslave.go:98 +0xfd
 
Last edited:
CentOS 7:
Trying to run directslave --password, but I am getting:

DEBUG: Running as root (0), dropping privileges to 25:25
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x596ca4]

goroutine 1 [running]:
log.(*Logger).Output(0x0, 0x2, 0xc4200422d0, 0x41, 0x0, 0x0)
/usr/local/go/src/log/log.go:149 +0x54
log.(*Logger).Fatal(0x0, 0xc4200379a0, 0x1, 0x1)
/usr/local/go/src/log/log.go:188 +0x6a
main.UpdatePasswordFile()
/export/store/Project/home/golang/directslave/directslave.go:860 +0x247
main.RunWithOption(0x7fffa6eff793, 0xa)
/export/store/Project/home/golang/directslave/directslave.go:283 +0x22f
main.main()
/export/store/Project/home/golang/directslave/directslave.go:98 +0xfd

path to rndc was wrong, changed the path to rndc and it's working now
 
Hi,

Just installed it on Ubuntu 16.04.

run /usr/local/directslave/bin/directslave --check everything is OK

After create test.com domain on DA for testing, only /etc/named/secondary/named.conf file created, there is no test.com.db zone file.

error.log
Code:
2017/07/07 19:16:51 DEBUG: &{Method:POST URL:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com Proto:HTTP/1.0 ProtoMajor:1 ProtoMinor:0 Header:map[Authorization:[Basic YWRtaW46R2lARHV5NzI3NQ==] Content-Length:[867]] Body:0xc420019f40 GetBody:<nil> ContentLength:867 TransferEncoding:[] Close:true Host: Form:map[action:[rawsave] domain:[test.com]] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr:104.207.135.112:52941 RequestURI:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc4200e7980}
2017/07/07 19:16:51 DEBUG: &{Method:POST URL:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com Proto:HTTP/1.0 ProtoMajor:1 ProtoMinor:0 Header:map[Authorization:[Basic YWRtaW46R2lARHV5NzI3NQ==] Content-Length:[1356]] Body:0xc4201803c0 GetBody:<nil> ContentLength:1356 TransferEncoding:[] Close:true Host: Form:map[domain:[test.com] action:[rawsave]] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr:104.207.135.112:60540 RequestURI:/CMD_API_DNS_ADMIN?action=rawsave&domain=test.com TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc4200e7e90}
2017/07/07 19:16:57 exit status 1

action.log
Code:
2017/07/07 19:16:50 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:50 Checking test.com from 104.207.135.112
2017/07/07 19:16:50 Domain test.com not exists
2017/07/07 19:16:50 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:50 Checking test.com from 104.207.135.112
2017/07/07 19:16:50 Domain test.com not exists
2017/07/07 19:16:51 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:51 Domain test.com added with primary 104.207.135.112
2017/07/07 19:16:51 Authorization passed for admin from 104.207.135.112
2017/07/07 19:16:51 Reloaded test.com from master 104.207.135.112
2017/07/07 19:16:57 RNDC queue triggered with 2 events
2017/07/07 19:16:57 RNDC output:

access.log
Code:
2017/07/07 19:16:50 [104.207.135.112] "GET /CMD_API_DNS_ADMIN?action=exists&domain=test.com HTTP/1.0"
2017/07/07 19:16:50 [104.207.135.112] "GET /CMD_API_DNS_ADMIN?action=exists&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"
2017/07/07 19:16:51 [104.207.135.112] "POST /CMD_API_DNS_ADMIN?action=rawsave&domain=test.com HTTP/1.0"

I am not sure if this will help, but I added allow-transfer and allow-notify in /etc/bind/named.conf.options (directadmin server) and pointed to the IP address of the slave.

allow-transfer { 1.2.3.4; };
allow-notify { 1.2.3.4; };
notify yes;


Is your named-workdir /etc/named/secondary ? Make sure bind/named has access to directory /etc/named/secondary/.
 
Last edited:
I am not sure if this will help, but I added allow-transfer and allow-notify in /etc/bind/named.conf.options (directadmin server) and pointed to the IP address of the slave.

allow-transfer { 1.2.3.4; };
allow-notify { 1.2.3.4; };
notify yes;


Is your named-workdir /etc/named/secondary ? Make sure bind/named has access to directory /etc/named/secondary/.

I update DA config and re-check the bind permission OK, but still no .db zone file in named-workdir.
 
Thanks, I'll create centos 7 install to test. Did you use "yum install bind9" to install bind your centos ?

I did:
yum install bind
firewall-cmd --permanent --zone=public --add-port=2222/tcp
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd --reload
chown -R named:named /usr/local/directslave
chown -R named:named /var/named

I put the slaves in /var/named directory
Code:
named_workdir   /var/named/slaves
named_conf      /var/named/directslave.inc
rndc_path       /usr/sbin/rndc
 
Last edited:
Hi,

Just installed it on Ubuntu 16.04.

run /usr/local/directslave/bin/directslave --check everything is OK

After create test.com domain on DA for testing, only /etc/named/secondary/named.conf file created, there is no test.com.db zone file.

Change named_workdir (in directslave.conf) to: /var/cache/bind
Restart directslave (and bind9)

See file: /etc/apparmor.d/usr.sbin.named
Code:
  # /etc/bind should be read-only for bind
  # /var/lib/bind is for dynamically updated zone (and journal) files.
  # /var/cache/bind is for slave/stub data, since we're not the origin of it.
  # See /usr/share/doc/bind9/README.Debian.gz
  /etc/bind/* r,
  /var/lib/bind/** rw,
  /var/lib/bind/ rw,
  /var/cache/bind/** lrw,
  /var/cache/bind/ rw,
 
Last edited:
Hi,

How to make directslave auto start after reboot in Ubuntu ?

There are several ways. I have not tested it yet with directslave and already erased the ubuntu test system.

A: crontab
You can use crontab, by adding @reboot /usr/local/directslave --run
1. crontab -e
2. @reboot /usr/local/directslave --run

B: /etc/rc.local
You can edit /etc/rc.local file and add /usr/local/directslave --run

c: Upstart or systemd
I believe Ubuntu 16.04 use systemd, please look at the example script at https://wiki.ubuntu.com/SystemdForUpstartUsers
The location of the new service file should be in /etc/systemd/system or /lib/systemd/system
 
Finally getting some time to work on implementing this. Quick, lazy question on the slave server, does anybody have any recommendations on a cheap, reliable (cloud) provider in the US that they like? I have an AWS account, but their hosting services seem to get pricey quickly, IIRC. I've worked with a lot of budget, shared hosts over the years, but most don't allow much/any shell access....
 
Finally getting some time to work on implementing this. Quick, lazy question on the slave server, does anybody have any recommendations on a cheap, reliable (cloud) provider in the US that they like? I have an AWS account, but their hosting services seem to get pricey quickly, IIRC. I've worked with a lot of budget, shared hosts over the years, but most don't allow much/any shell access....

Check lowendbox.com, companies post their offers on that website. You can see the user experiences/reviews on each deal.
 
Hello,

I'm trying to install DirectSlave on centos 7.
Everything is working i guess.
Except my *.db files look weird and not like they are on the server with directadmin.

This is how my *.db files right now, this can't be right?
Code:
^@^@^@^B^@^@^@^AY�^U-^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@n^@^A^@^F^@^@^@^@8@^@^@^@^A^@^T^Oaquariummanager^Bnl^@^@D^Cns1^Hhostplus^Bnl^@
hostmaster^Oaquariummanager^Bnl^@x:��^@^@8@^@^@^N^P^@^Ru^@^@^AQ�^@^@^@N^@^A^@^B^@^@^@^@^A,^@^@^@^B^@^T^Oaquariummanager^Bnl^@^@^Q^Cns1^Hhostplus^Bnl^@^@^Q^Cns2^Hhostplus^Bnl^@^@^@$^Dmail^Oaquariummanager^Bnl^@^@^@^@1^@^A^@^A^@^@^@^@^A,^@^@^@^A^@^W^Baa^Oaquariummanager^Bnl^@^@^D%a�^C^@^@^@

I've 3 other domains setup and al look somewhat similar.

Does anybody have this same problem and how did they fix it?
There is also no error or what so ever.
 
Back
Top