Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env php
- <?php
- $rootDir = '/var/www/html/';
- $file = '/etc/vsftpd/ftpd.passwd';
- $username = getenv('USERNAME') ?: getenv('USER');
- if($username!='root'){
- echo "You must run this script as root: sudo vsftpd-user ...\n";
- exit;
- }
- $map = [];
- if(file_exists($file)){
- foreach(file($file) as $line){
- $line = trim($line);
- if(empty($line)) continue;
- $sep = strpos($line,':');
- $user = substr($line,0,$sep);
- $password = substr($line,$sep+1);
- $map[$user] = $password;
- }
- }
- $action = isset($argv[1])?$argv[1]:null;
- $user = isset($argv[2])?$argv[2]:null;
- $pass = isset($argv[3])?$argv[3]:null;
- switch($action){
- case 'update';
- if(!isset($map[$user])){
- echo "User $user allready exists, use add or set to create it\n";
- exit;
- }
- break;
- case 'add';
- if(isset($map[$user])){
- echo "User $user allready exists, use update or set to update it\n";
- exit;
- }
- break;
- }
- switch($action){
- case 'update';
- case 'add';
- case 'set';
- if(isset($map[$user])){
- echo "User $user updated\n";
- }
- else{
- echo "User $user created\n";
- }
- if(!is_dir($rootDir.$user)){
- mkdir($rootDir.$user,0777,true);
- }
- chmod($rootDir.$user,0777);
- $map[$user] = trim( shell_exec('openssl passwd -1 '.escapeshellarg($pass)) );
- break;
- case 'remove';
- if(!$user){
- echo "Missing user parameter\n";
- exit;
- }
- if(isset($map[$user])){
- unset($map[$user]);
- echo "User $user removed\n";
- }
- else{
- echo "User $user not found\n";
- }
- break;
- case 'list';
- echo implode("\n",array_keys($map))."\n";
- break;
- default:
- echo "Available commands are 'set', 'remove', 'add', 'update', 'list'\n";
- exit;
- break;
- }
- $content = '';
- foreach($map as $u=>$p){
- $content .= "$u:$p\n";
- }
- file_put_contents($file,$content);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement