loewexy / pdnsmanager Goto Github PK
View Code? Open in Web Editor NEWA simple administration interface for PowerDNS nameserver.
License: Apache License 2.0
A simple administration interface for PowerDNS nameserver.
License: Apache License 2.0
Hi Guys,
Is it normal when adding a domain using pdnsmanager, the page will not refresh after successfully added the domain?
Followed the instructions at https://pdnsmanager.lmitsystems.de/quickstart/ (but on CentOS) and got to the installation page. Filled in all of the fields, but absolutely nothing happens when I click the "Install" button. There is no activity in the browser or on the server.
Does anyone have any ideas?
Craig
Seems that powerdns do not handle special chars in domain names but works fine if I add the punycode variant.
We should abstract this.
Displayed: exömple.com
Database: xn--exmple-xxa.com
So I tried to complete the install and it put me to the upgrade page.
Every time I do an install it puts me to the upgrade page.
I tried removing all of it and installing the stable version.. that too puts me to the upgrade page after install.
The login button after the upgrade puts me to... the upgrade page.
Hello,
You should trim the values that go into database (for VARCHAR/CHAR fields) before inserting/updating.
For instance:
in the api/edit-master.php file in action for save and insert, you should trim the $input->content variable before storing, as powerdns has some issues with AXFR, if record has space/tabs after the content. Eg: storing "my.cname.example.org " in content field of records table, will cause it to fail the AXFR with error:
Exception: All data was not consumed
Please correct this in your next version.
Kind regards,
Dejan
Hi there.
I'm unable to install verison 1.2.1 - error in apache logs is:
[Wed Nov 08 13:27:08.320136 2017] [:error] [pid 1197] [client XXX:57968] PHP Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /var/www/html/pdnsmanager/api/install.php:126\nStack trace:\n#0 {main}\n thrown in /var/www/html/pdnsmanager/api/install.php on line 126, referer: http://XXX/poweradmin/install.php
When I click "Install" button, nothing happens, so I went to check error logs and found this.
I know this is a bit of a petty request and I am sorry for that. What is important is that I know it is. (:
How do I add white space to the bottom fo the edit-master page. It is very uncomfortable for me to go way down there with my mouse and eyes when typing in information on my laptop. Also when I hit the add button on a record it pushes off the bottom of the page. I want to be able to scroll it up a bit (or a lot) on the page. Again.. really sorry to bother you all with this. Formatting is not my specialty.
When hovering a domain record the text cursor is shown instead of the "finger pointer". I think it's confusing that there is no visual indication for a link.
Could we please move the default values for things like "zone-ttl" in the config file? Right now it is hard coded in the .php files.
I am editing them in the add-domain.php fully aware that when you update that my changes will be lost and have to be redone. Also.. to be clear.. Would love to set the default "Primary" and default "eMail" as those are almost always the same for me.
And the same for Add Record.
Hi,
Very cool tool !
Just need CAA record type if you can add it ?
Thanks,
Bertrand
Currently user input errors are handled with a red line around the erroneous field. This may confuse the user since there is no obvious response to the users action. Normally a user would probably expect a refresh of the current view after he pressed Add
or Delete
to get the updated content after his action was taken. A refresh doesn't happen and that is fine in my opinion. But the current red line may lead to the perception that the request was not executed, the interface stopped working, or what not because it's simply not recognized easily as a faulty input ...
A better approach would be to get "more" into the users eye and give him a better reasoning for the error. A better visible reaction to his failed action.
Take your install.php for example. A faulty mysql configuration will spawn a red bar at the top stating the error.
By the way,
happy easter and thanks for your project.
EDIT: Spelling
When you follow all instructions as written on your website I end up with this error. Connection to database failed. Upon visiting http://example.com/index.php
When I setup my database details in /var/www/pdnsmanager/config/config-default.php the error is gone.
I just did a fresh git pull..
Gave full access to the install files chmod a+rwx
fill out the form as indicated.
Press install button.. button presses but nothing happens..
Also.. for fun.. I copied the config-user.php from my working site.. but passwords are not accepted when I try to login. Also tried adding $config['db_type'] = "mysql"; to the config-user.php and that did not help.
The API should maybe not only support Keys and User/pass, but also API tokens - that would make usage in many cases easier.
The granularity of API access is another topic that explicitly should not be part of this issue.
When adding a new record there should be default values for the fields ttland prio when left empty.
Is it possible to use the pdns http api as described in
https://doc.powerdns.com/3/httpapi/README/
to manage the records?
Advantages are being agnostic about the db backend, let pdns handle this.
Is there a future plan for templates ?
I think it's nice to have such feature for adding fast domainnames with the same scheme for records.
Something with placeholders and such.
Just a request for an improvement that would be nice. The user permissions can be set so that end users can manage their own domains, this is great but it'd be nice to have another level below that, EG: Minion (or something!)
The difference for this new user is that the SOA fields at the top of the domain are greyed out and un-editable and also the NS records are un-editable. Basically, no risk of breaking the core DNS function but they can add and remove A, MX, TXT, etc records.
This change will prevent Minions from breaking domains forcing Admins or Users to clean up the mess!
Would it be possible to get the dyndns nic api working with this management panel?
something like: https://github.com/fwenzel/powerdns-dyndns and map it to your api thingy like here: https://pdnsmanager.lmitsystems.de/documentation/api/ this would make it very useful for system administrators and network guys because most network equipment already has support for custom dyndns2 protocol which means it would be a ready to go solution and maybe a good selling point aswell
The remote management page should show a back button and the name of the record.
I have updated to the latest version, the DB is migrated, but I cannot login anymore to my account.
No errors shown, only "Username and/or password wrong!"
This is a feature request...
Can we have a full name field added to the user form? Logins are usually nicknames or first initial and last name. It makes it easier if we can see the full name of the person so later when we look at it we can remember who that person was.
Thank you!!!
~ Merlin
Hey. PDNS Manager is very nice, but I've found some feature's that would be nice:
First of all I would like to thank you for sharing this great app and tell you that it is the best one I have seen so far for pdns.
Why is the default sort order by ID? That would make sense for a computer but not for a human. A human is going to look down a list for a username or domain name in alphabetical order. To me.. it all just looks scrambled and random. Is there a way to make this sort alpha by default? I am perfectly fine with hacking the code if you direct me to the right spots and give me a clue as to how to change it.
Note: I know I can click the top of the column and make it sort there. But that setting is not remembered when I return to the page and I am having to click that obsessively. This is counter to the general function/purpose of a computer.
Thank you again!!
As title, any change to the SOA and the email has a trailing dot appended to the end causing pdnsutil check-zone to throw up a warning.
Removing the trailing dot in the database manually and pdnsutil check-zone is happy :)
It seems, that the pdnsmager needs a php version >= 5.5 and not 5.x
I tried to install it on an centos 7.2 which only has an php 5.4.x and it fails on install.php line 120 password_hash(), which is a new function of php 5.5
When pdnsmanager was already set up, the pdnsmanager specific tables are not empty. If this is the case, the install shoud prompt a warning.
Another possibility would be to silently use the exisiting configuration - which will work only if the name of the admin user that is specified during the installation differs from the one already set up or if they have the same password.
As the topic says.
Hey,
You have an output block over the php init stuff: https://github.com/lamclennan/pdnsmanager/blob/master/index.php#L17
which leads to Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:17) in /var/www/html/lib/headers.php on line 19
Chears
It's still not possible to add the master IP to the domain record when a domain is added. Is this not needed for a properly working PowerDNS setup ?
If you edit an existing record no input validation on the new values is done e.g. you can put letters in the TTL.
Ahoy!
As I just installed pdnsmanager on a system where I forgot to give the webserver write access to the DocRoot of the vHost, I noticed that /install.php
tries to write the config, but silently fails to do so.
When you then are redirected to the start page, it just puts "Connection to database failed" as it tries to use the credentials from config/config-default.php
and fails to do so as they are not valid.
I propose that install.php
should verify that it can write the configuration file and otherwise display a clear warning.
Currently the Content of the table has no max length or soft wrap, that can lead to a really "long" page. For example: a DKIM record may get you scrolling for a while. The navigation / control of a record becomes a "scroll fiesta".
I have installed pdns version 4 and pdnsmanager both seems to have different db structure which version of pdns does pdnsmanager support . I understand pdns has some of its own tables but that is not my concern, what i am concerned about the missing tables of pdns itself in the db structure of pdnsmanager . Following are two dbs
MariaDB [pdnsmanager]> show tables;
+-----------------------+
| Tables_in_pdnsmanager |
+-----------------------+
| domainmetadata |
| domains |
| options |
| permissions |
| records |
| remote |
| user |
+-----------------------+
MariaDB [powerdns]> show tables;
+--------------------+
| Tables_in_powerdns |
+--------------------+
| comments |
| cryptokeys |
| domainmetadata |
| domains |
| options |
| records |
| remote |
| supermasters |
| tsigkeys |
+--------------------+
The only thing missing is logs who was logged and what he did.
I followed the docs on how to set up let's encrypt signing. I got a error if i named the file config.sh so i hade to rename it to just config.
But when i try to sign i get Id and domain do not match!
In the pdns-acme.json file i have the domain i want to sign and the same ID as the "ACME" key has on the _acme record.
Inputs for adding new record are at bottom of the page when editing zone.
With small zones its ok but if you have hundreds of records in one zone, it isn't comfortable to scroll down every time you want to add something.
Move the element to top is probably not best option. Cloning it so you can add new record from top and also from bottom would be probably better.
When I run http://mydomain/install.php and I hit install I get:
No such file or directory
Is this known as there is no PHP-error shown it's Jquery.
Thanks!
When adding a record I am a bit of a keyboard guy and hate reaching for the mouse. It would be nice if I could hack it so that pressing enter activates the ADD button.
(sorry I am generating so many issues for you)
Hi, I just stumbled over your neat little project and got a question.
Since you state gmysql-dnssec=no
in your documentation I'm asking myself if there are any Issues with the PDNS Manager and this aspect of powerdns functionality? If so, what kind of problems are to be expected?
We have about 5k domains and it takes about 8 seconds to load. While domains are loading, I'm not able to enter anything into search box.
I love that PDNS Manager don't have pagination but it would be probably better to use it :) I think if you load like 100 domains first and than use ajax search, it would be much comfortable to use. Of course number of domains to load can be configurable to suits everybody needs.
Thanks for considering.
I want to use pdnsmanager for letsencrypt new domain certificate generation by dns based challenge after installing pdnsmanegr now I am at part of letsencrypt and the part which explains to add domain to json and pem certificate to domain using pdnsmanager interface . what I am confused about is that which domain is this part suggesting is it for each new domains I want to add to dns and for that each new domain I need to create txt record with pem certificate as key .
would appreciate some info on this part mentioned below related to domain .
change to the directory of pdns-client, generate a keypair and output the public key:
cd pdns-client
./pdns-keygen
cat pdns.public.pem
Copy the generated public key to your clipboard.
In the next step, open a browser and login to your PDNS Manager instance. Add a record to your domain with the name _acme-challenge., type TXT and content none. Use a Priority of 0 and a TTL of 60.
Afterwards, click on to share icon which is the last icon in the row of the record. Click on Add Key. Enter a description like ACME and paste the public key from your clipboard into the field. Confirm with Add. You now need to remember the ID of the permission you have added, which is displayed in the table on the left.
Configure pdns-acme
Change to the directory of pdns-acme and copy the example config.
cd ../pdns-acme
cp pdns-acme.json.example pdns-acme.json
Open the file pdns-acme.json with an editor of your choice. In the config section adjust the path of your PDNS Manager installation and also the deploy-wait value. The deploy-wait parameter determines how long the script should wait for the DNS servers to get the right results. This value depends on your nameserver setup. The default of 300 should do well for most setups. After these changes, the section looks like that:
"config": {
"server": "https:///",
"pdns-client": "../pdns-client/pdns-client",
"deploy-wait": 300
}
Its possible to use the remote API for DynDNS like
https://pdns.example.com/api/remote.php?action=updateRecord&domain=home.example.com&id=1&password=secret&content=123.123.123.123
but its difficult to configure, especially setting the IP.
What about an api/dyndns.php
endpoint?
$_SERVER['REMOTE_ADDR']
?So I could configure in my Box https://pdns.example.com/api/dyndns.php?token=asd
and I'm ready?
Improvement request.
Can we have a confirm on Delete please. Currently deletes records without warning.
This could be a var set in the user config file so people could choose to enable/disable as required.
PDNS newest debian-package version with enabled mysql-backend
Installed newest stable pdnsmanager version by hand
Running install.php successfully
Adding new master domain including records: Successfully
They are inserted into the database, but they are not displayed in webinterface. Just empty rows, although the DNS server is fully working and the records are in fact in database and were inserted by pdnsmanager.
Strange bug ...
It would be great to have search box in header. Best with live search included.
Its common to edit one domain and need to switch to different one. In current version I have to
Thanks for considering.
I installed pdnsmanager on top of an existing PowerDNS + Poweradmin setup, looking to replace Poweradmin completely.
However, after install procedure is over, no domains are shown. Creating new zones is possible, they are also inserted into the DB properly, but the domain listing is still empty.
I was able to locate an exception after digging around
PHP message: PHP Fatal error: Uncaught exception 'mysqli_sql_exception' with message
''[my_db_name].D.name' isn't in GROUP BY' in /var/.../.../pdnsmanager/api/domains.php:66
Stack trace:
#0 /var/.../.../pdnsmanager/api/domains.php(66): mysqli->prepare('? SELECT...')
#1 {main}
thrown in /var/.../.../pdnsmanager/api/domains.php on line 66
SQL92 requires that all columns (except aggregates) in the select clause is part of the group by clause. SQL99 loosens this restriction a bit and states that all columns in the select clause must be functionally dependent of the group by clause.
MySQL allows the latter by default, however my sql_mode is set to ONLY_FULL_GROUP_BY to prevent MySQL from returning non-deterministic answers.
Including all columns in fixes this issue.
--- a/api/domains.php
+++ b/api/domains.php
@@ -35,7 +35,7 @@ if(isset($input->action) && $input->action == "getDomains") {
LEFT OUTER JOIN records R ON D.id = R.domain_id
LEFT OUTER JOIN permissions P ON D.id = P.domain
WHERE (P.user=? OR ?)
- GROUP BY D.id
+ GROUP BY D.id, D.name, D.type
HAVING
(D.name LIKE ? OR ?) AND
(D.type=? OR ?)
I have two suggestions regarding this matter:
Let me know what you think, I'm happy to help out 😊
More information on my setup:
My DB Schema: https://gist.github.com/alexdo/94ddfb9223cebfd7edcbd6461d640b5b
MySQL Version: 5.6.28-0ubuntu0.14.04.1-log
PHP Version: PHP 5.5.9-1ubuntu4.16 (Ubuntu 14.04 LTS default)
I keep getting this error: Connection to database failed
I have MariaDB 10 installed on Ubuntu 14.04
I followed this guide to install PowerDNS:
So I am not sure what I can possibly be doing wrong. I have created another database as well but still same error.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.