24 Juni 2016 - 15:42:50 - Read: 1762

Ngoding Sendiri Buat Menambah Massal User Hotspot di Mikrotik Tanpa User Manager

Yarp, ne ceritanya lagi nyetting hotspot, trus pas tiba saatnya nambahin user untuk login hotspot, ternyata User Manager belum diinstall. Download Userman 13MB? Euhm... berhubung koneksi yang lumayan keong, ditambah waktu kerja yang udah hampir memasuki kategori lembur, sepertinya harus pake jalan pintas. Yarp. Ngoding emang jalan paling pintas buat para programmer, walaupun yang lagi dikerjain tentang networking. :p

Untung ja mikrotik nyediain API PHP Class http://wiki.mikrotik.com/wiki/API_PHP_class untuk mengakses mikrotik. Tentu saja terlebih dahulu kita mengaktifkan Service API di mikrotik. Udah tahu yak. Yarp, next aku coba modif codingan dari Azhari Harahap http://back2arie.wordpress.com/2010/11/05/menambahkan-user-hotspot-mikrotik-secara-massal/

define('MIKROTIK_IP', '192.168.88.1');
define('MIKROTIK_USERNAME', 'admin');
define('MIKROTIK_PASSWORD', '');
define('SERVER', 'all');
define('PROFILE', 'default');
 
$API = new routeros_api();
 
if ($API->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
    $user = array(1 => array('name' => 'user1', 'password' => 'pass1'),
                  2 => array('name' => 'user2', 'password' => 'pass2'),
                  3 => array('name' => 'user3', 'password' => 'pass3'),
                  4 => array('name' => 'user4', 'password' => 'pass4'),
                  5 => array('name' => 'user5', 'password' => 'pass5'),
                  );
 
    foreach($user as $tmp)
    {
        $username="=name=";
        $username.=$tmp['name'];
 
        $pass="=password=";
        $pass.=$tmp['password'];
 
        $server="=server=";
        $server.=SERVER;
 
        $profile="=profile=";
        $profile.=PROFILE;
 
        $API->write('/ip/hotspot/user/add',false);
        $API->write($username, false);
        $API->write($pass, false);
        $API->write($server, false);
        $API->write($profile);
 
        $ARRAY = $API->read();
    }
    $API->disconnect();
}


beberapa codingan yang aku tambahin biar ne script biar lebih mirip usermanager,

[php]
<?php
    class yarpMikrotik {
        static $nUser=10;
        static $prefix='';
        static $rndUser=3;
        static $nPass=6;
        function generateChars($limit,$specialchars=false){
            $hexa=NULL;
            $chars = ($specialchars===false)?null:"!#%^*[]+=";
            $chr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvqxyz0123456789".$chars;
            for($i=1;$i<$limit+1;$i++){
                $rIdx = rand(1,strlen($chr));
                $hexa .=substr($chr,$rIdx,1);
            }
            return $hexa;
        }
        protected static function getval($str){
            $argv=$_SERVER['argv'];
            $u=array_keys($argv,$str);
            return $argv[$u[0]+1];            
        }
        protected static function getargv(){
            $argv=$_SERVER['argv'];
            if($_SERVER['argc']>1){
                $u=(in_array("-u",$argv))?self::getval("-u"):self::$nUser;
                $prefix=(in_array("--prefix",$argv))?self::getval("--prefix"):self::$prefix;
                $rndUser=(in_array("-r",$argv))?self::getval("-r"):self::$rndUser;
                $p=(in_array("-p",$argv))?self::getval("-p"):self::$nPass;
            }
            $output['u']=$u;
            $output['prefix']=$prefix;
            $output['r']=$rndUser;
            $output['p']=$p;
            return $output;
        }
        public static function generateUser(){
            $config=self::getargv();            
             for($i=1;$i<$config['u'];$i++){
                $user[$i]=array('name'=>$config['prefix'].generateChars($config[$r]),'password'=>generateChars($config['p']));
             }
             return $user;
        }
    }


Lalu kita modif lagi script dari Azhari jadi kek gini:

$user=yarpMikrotik::generateUser();
    foreach($user as $tmp)
    {
        exec("echo ".$tmp['name']." : ".$tmp['password']." >> listUserPassword");

Dengan tambahan kode diatas, program bisa melakukan beberapa hal yang biasa kita lakukan dengan user manager, antara lain:

- input jumlah user yang akan didaftarkan
- prefix name untuk masing-masing user
- jumlah karakter random setelah user
- panjang karakter password
- langsung otomatis men-generate voucher kedalam format yang mudah dibaca "username:password"
- via CLI jadinya lebih ringan dan yang pasti bisa dilakukan via remote tanpa harus membuka winbox/webfig :p

Yarp, ne aslinya dipake sendiri sih, tapi kalo ada yang mau copas ya silahkan.. yarp yarp ^_^

cara pakenya tinggal:

$ ./yarpMikrotik -u 10 -p 6 -r 3 --prefix user


yang pasti setelah filenya di chmod yak :p