/**
* Simple lock server daemon that accepts lock/unlock requests
+ *
+ * @ingroup LockManager Maintenance
*/
class LockServerDaemon {
/** @var resource */
/**
* @params $config Array
+ * @param array $config
+ * @throws Exception
* @return LockServerDaemon
*/
public static function init( array $config ) {
foreach ( array( 'address', 'port', 'authKey' ) as $par ) {
if ( !isset( $config[$par] ) ) {
die( "Usage: php LockServerDaemon.php " .
- "--address <address> --port <port> --authkey <key> " .
+ "--address <address> --port <port> --authKey <key> " .
"[--lockTimeout <seconds>] " .
- "[--maxLocks <integer>] [--maxClients <integer>] [--maxBacklog <integer>]"
+ "[--maxLocks <integer>] [--maxClients <integer>] [--maxBacklog <integer>]\n"
);
}
}
}
/**
+ * @throws Exception
* @return void
*/
protected function setupServerSocket() {
$m = explode( ':', $data ); // <session, key, command, type, values>
if ( count( $m ) == 5 ) {
list( $session, $key, $command, $type, $values ) = $m;
- if ( sha1( $session . $command . $type . $values . $this->authKey ) !== $key ) {
+ $goodKey = hash_hmac( 'sha1',
+ "{$session}\n{$command}\n{$type}\n{$values}", $this->authKey );
+ if ( $goodKey !== $key ) {
return 'BAD_KEY';
} elseif ( strlen( $session ) !== 32 ) {
return 'BAD_SESSION';