Advertisement
Guest User

Untitled

a guest
Feb 14th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #!/usr/bin/env php
  2. <?php
  3. $rootDir = '/var/www/html/';
  4. $file = '/etc/vsftpd/ftpd.passwd';
  5. $username = getenv('USERNAME') ?: getenv('USER');
  6. if($username!='root'){
  7. echo "You must run this script as root: sudo vsftpd-user ...\n";
  8. exit;
  9. }
  10. $map = [];
  11. if(file_exists($file)){
  12. foreach(file($file) as $line){
  13. $line = trim($line);
  14. if(empty($line)) continue;
  15. $sep = strpos($line,':');
  16. $user = substr($line,0,$sep);
  17. $password = substr($line,$sep+1);
  18. $map[$user] = $password;
  19. }
  20. }
  21. $action = isset($argv[1])?$argv[1]:null;
  22. $user = isset($argv[2])?$argv[2]:null;
  23. $pass = isset($argv[3])?$argv[3]:null;
  24. switch($action){
  25. case 'update';
  26. if(!isset($map[$user])){
  27. echo "User $user allready exists, use add or set to create it\n";
  28. exit;
  29. }
  30. break;
  31. case 'add';
  32. if(isset($map[$user])){
  33. echo "User $user allready exists, use update or set to update it\n";
  34. exit;
  35. }
  36. break;
  37. }
  38. switch($action){
  39. case 'update';
  40. case 'add';
  41. case 'set';
  42. if(isset($map[$user])){
  43. echo "User $user updated\n";
  44. }
  45. else{
  46. echo "User $user created\n";
  47. }
  48. if(!is_dir($rootDir.$user)){
  49. mkdir($rootDir.$user,0777,true);
  50. }
  51. chmod($rootDir.$user,0777);
  52. $map[$user] = trim( shell_exec('openssl passwd -1 '.escapeshellarg($pass)) );
  53. break;
  54. case 'remove';
  55. if(!$user){
  56. echo "Missing user parameter\n";
  57. exit;
  58. }
  59. if(isset($map[$user])){
  60. unset($map[$user]);
  61. echo "User $user removed\n";
  62. }
  63. else{
  64. echo "User $user not found\n";
  65. }
  66. break;
  67. case 'list';
  68. echo implode("\n",array_keys($map))."\n";
  69. break;
  70. default:
  71. echo "Available commands are 'set', 'remove', 'add', 'update', 'list'\n";
  72. exit;
  73. break;
  74. }
  75. $content = '';
  76. foreach($map as $u=>$p){
  77. $content .= "$u:$p\n";
  78. }
  79. file_put_contents($file,$content);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement