Example #1
0
 /**
  * Login to a RouterOS connection.
  * 
  * This is the actual login procedure, applied regardless of persistence and
  * charset settings.
  * 
  * @param Communicator $com      The communicator to attempt to login to.
  * @param string       $username The RouterOS username.
  * @param string       $password The RouterOS password. Potentially parsed
  *     already by iconv.
  * @param int|null     $timeout  The time to wait for each response. NULL
  *     waits indefinetly.
  * 
  * @return bool TRUE on success, FALSE on failure.
  */
 private static function _login(Communicator $com, $username, $password = '', $timeout = null)
 {
     $request = new Request('/login');
     $request->send($com);
     $response = new Response($com, false, $timeout);
     $request->setArgument('name', $username);
     $request->setArgument('response', '00' . md5(chr(0) . $password . pack('H*', $response->getArgument('ret'))));
     $request->send($com);
     $response = new Response($com, false, $timeout);
     return $response->getType() === Response::TYPE_FINAL && null === $response->getArgument('ret');
 }