Ben bir PHP komut dosyası bir ejabberd kullanıcı oluşturmanız gerekir. Ben de önceden tanımlanmış bir ortak liste için yeni kullanıcı eklemek için gerekiyor.
Ben sadece ejabberdctl
exec()
veya daha iyi bir yolu var çağırayım mı?
jldupont's advice o ejabberdctl
kolay çözüm olurdu sayesinde, ben koştu ve bir çalışma çözüm var engellerin üzerinden bastırılır.
Varsayılan olarak, apache kullanıcı başarıyla ejabberdctl
çalıştırın (ve iyi bir nedenle) için doğru ayrıcalıklara sahip değil. Yani çalışmak için sırayla, sudo
ile aramak zorunda. Ama ... sudo
2 sorunları sunan bir parola gerektirir:
(Ubuntu için) Çözüm - sonunda bu satırı eklemek /etc/sudoers
:
www-data ALL= (ejabberd) NOPASSWD: /usr/sbin/ejabberdctl
Sudoers dosyası ve ejabberdctl yolu, diğer Linux dağıtımlar için değişebilir. Bu apache kullanıcı (www-data
), sadece ejabberdctl
yükseltilmiş ayrıcalıklarla ve bir şifre gerektirmeden çalıştırmak için izin verir.
Kalan tüm PHP kodu:
<?php
$username = 'tester';
$password = 'testerspassword';
$node = 'myserver.com';
exec('sudo -u ejabberd /usr/sbin/ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);
if($output == 0)
{
// Success!
}
else
{
// Failure, $output has the details
echo '<pre>';
foreach($output as $o)
{
echo $o."\n";
}
echo '</pre>';
}
?>
Bu sadece tek bir komut www-data
ile çalıştırmak için izin konum olsa bile, bu önemli bir güvenlik riski gelmez dikkat etmek önemlidir. Bu yaklaşımı kullanırsanız, sadece herkes bunu yürütmek yapamaz böylece kimlik çeşit arkasında PHP kodu korumak emin olmak gerekir. Bariz güvenlik riskleri ötesinde, Service saldırısı Reddi için sunucu açabilir.
Eğer XMPP protokolü içinde PHP kullanarak bunu yapmanın bir temiz ve güvenli bir şekilde istiyorsanız, bu örnek komut ile çalışma tavsiye edecek register_user.php. Bu Jaxl PHP Kütüphanesi içinde bulunabilir bir örnektir.
Jaxl kütüphane indirin ve aşağıdaki gibi kullanın:
JAXL $ php examples/register_user.php localhost
Choose a username and password to register with this server
username:test_user
password:test_pass
registration successful
shutting down...
JAXL $