Software / code / prosody
Comparison
prosodyctl @ 4826:1c4852da78c8
prosodyctl: Replace hack with lfs for checking if a file exists
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 09 May 2012 01:02:00 +0200 |
| parent | 4824:73e261ed00a9 |
| child | 4827:fefbfd76d2d3 |
comparison
equal
deleted
inserted
replaced
| 4825:5fdc36bd866c | 4826:1c4852da78c8 |
|---|---|
| 612 show_message(error_messages[msg]) | 612 show_message(error_messages[msg]) |
| 613 return 1; | 613 return 1; |
| 614 end | 614 end |
| 615 | 615 |
| 616 local openssl = require "util.openssl"; | 616 local openssl = require "util.openssl"; |
| 617 local lfs = require "lfs"; | |
| 617 | 618 |
| 618 local cert_commands = {}; | 619 local cert_commands = {}; |
| 620 | |
| 621 local function ask_overwrite(filename) | |
| 622 return lfs.attributes(filename) and not show_yesno("Overwrite "..filename .. "?"); | |
| 623 end | |
| 619 | 624 |
| 620 function cert_commands.config(arg) | 625 function cert_commands.config(arg) |
| 621 if #arg >= 1 and arg[1] ~= "--help" then | 626 if #arg >= 1 and arg[1] ~= "--help" then |
| 622 local conf_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".cnf"; | 627 local conf_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".cnf"; |
| 623 if os.execute("test -f "..conf_filename) == 0 | 628 if ask_overwrite(conf_filename) then |
| 624 and not show_yesno("Overwrite "..conf_filename .. "?") then | |
| 625 return nil, conf_filename; | 629 return nil, conf_filename; |
| 626 end | 630 end |
| 627 local conf = openssl.config.new(); | 631 local conf = openssl.config.new(); |
| 628 conf:from_prosody(hosts, config, arg); | 632 conf:from_prosody(hosts, config, arg); |
| 629 for k, v in pairs(conf.distinguished_name) do | 633 for k, v in pairs(conf.distinguished_name) do |
| 649 end | 653 end |
| 650 | 654 |
| 651 function cert_commands.key(arg) | 655 function cert_commands.key(arg) |
| 652 if #arg >= 1 and arg[1] ~= "--help" then | 656 if #arg >= 1 and arg[1] ~= "--help" then |
| 653 local key_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".key"; | 657 local key_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".key"; |
| 654 if os.execute("test -f "..key_filename) == 0 then | 658 if ask_overwrite(key_filename) then |
| 655 if not show_yesno("Overwrite "..key_filename .. "?") then | 659 return nil, key_filename; |
| 656 return nil, key_filename; | 660 end |
| 657 end | 661 os.remove(key_filename); -- We chmod this file to not have write permissions |
| 658 os.remove(key_filename); -- We chmod this file to not have write permissions | |
| 659 end | |
| 660 local key_size = tonumber(arg[2] or show_prompt("Choose key size (2048):") or 2048); | 662 local key_size = tonumber(arg[2] or show_prompt("Choose key size (2048):") or 2048); |
| 661 if openssl.genrsa{out=key_filename, key_size} then | 663 if openssl.genrsa{out=key_filename, key_size} then |
| 662 os.execute(("chmod 400 '%s'"):format(key_filename)); | 664 os.execute(("chmod 400 '%s'"):format(key_filename)); |
| 663 show_message("Key written to ".. key_filename); | 665 show_message("Key written to ".. key_filename); |
| 664 return nil, key_filename; | 666 return nil, key_filename; |
| 670 end | 672 end |
| 671 | 673 |
| 672 function cert_commands.request(arg) | 674 function cert_commands.request(arg) |
| 673 if #arg >= 1 and arg[1] ~= "--help" then | 675 if #arg >= 1 and arg[1] ~= "--help" then |
| 674 local req_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".req"; | 676 local req_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".req"; |
| 675 if os.execute("test -f "..req_filename) == 0 | 677 if ask_overwrite(req_filename) then |
| 676 and not show_yesno("Overwrite "..req_filename .. "?") then | |
| 677 return nil, req_filename; | 678 return nil, req_filename; |
| 678 end | 679 end |
| 679 local _, key_filename = cert_commands.key({arg[1]}); | 680 local _, key_filename = cert_commands.key({arg[1]}); |
| 680 local _, conf_filename = cert_commands.config({arg[1]}); | 681 local _, conf_filename = cert_commands.config({arg[1]}); |
| 681 if openssl.req{new=true, key=key_filename, utf8=true, config=conf_filename, out=req_filename} then | 682 if openssl.req{new=true, key=key_filename, utf8=true, config=conf_filename, out=req_filename} then |
| 689 end | 690 end |
| 690 | 691 |
| 691 function cert_commands.generate(arg) | 692 function cert_commands.generate(arg) |
| 692 if #arg >= 1 and arg[1] ~= "--help" then | 693 if #arg >= 1 and arg[1] ~= "--help" then |
| 693 local cert_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".cert"; | 694 local cert_filename = (CFG_DATADIR or ".") .. "/" .. arg[1] .. ".cert"; |
| 694 if os.execute("test -f "..cert_filename) == 0 | 695 if ask_overwrite(cert_filename) then |
| 695 and not show_yesno("Overwrite "..cert_filename .. "?") then | 696 return nil, conf_filename; |
| 696 return nil, cert_filename; | |
| 697 end | 697 end |
| 698 local _, key_filename = cert_commands.key({arg[1]}); | 698 local _, key_filename = cert_commands.key({arg[1]}); |
| 699 local _, conf_filename = cert_commands.config({arg[1]}); | 699 local _, conf_filename = cert_commands.config({arg[1]}); |
| 700 local ret; | 700 local ret; |
| 701 if key_filename and conf_filename and cert_filename | 701 if key_filename and conf_filename and cert_filename |