Jump to content
Froxlor Forum
  • 0

Eigene Scripte erstellen


Bonkknogger

Question

Hallo, ich möchte gern ein eigenes Script erstellen welches mir ermöglicht, die Passwörter für FTP Konten zu ändern. 

 

Grund ist der, ich habe ein User Account auf dem mein Shoutcast Control Panel läuft. Die User sollen aber die Möglichkeit haben, via FTP ihre Musik hoch zu laden. bis dahin ist es kein Problem, da ich die FTP Konten Manuell anlege und wieder entferne... nur der User selber hat keine Möglichkeit, sein Passwort zu wechseln. 

 

gibt es eine Möglichkeit auf die Funktionen von Froxlor zurück zu greifen sodass die Passwörter nach Vorgaben aus dem Froxlor Panel erstellt werden können?

 

 

## Edit 1 

Habe mir mal die Funktionen hier angeschaut und etwas angepasst sodass die werte eig stimmen sollten. Jedenfalls nach vorgabe vom Froxlor was ich im Panel angegeben habe..

function generatePassword($isSalt = false)
{
    $alpha_lower = 'abcdefghijklmnopqrstuvwxyz';
    $alpha_upper = strtoupper($alpha_lower);
    $numeric = '0123456789';
    $special = '!?<>§$%+#=@';
    $length = 0 > 3 ? 0 : 10;
    
    $pw = special_shuffle($alpha_lower);
    $n = floor(($length) / 4);
    
    if (Settings::Get('panel.password_alpha_upper')) {
        $pw .= mb_substr(special_shuffle($alpha_upper), 0, $n);
    }
    
    if (Settings::Get('panel.password_numeric')) {
        $pw .= mb_substr(special_shuffle($numeric), 0, $n);
    }
    
    if (Settings::Get('panel.password_special_char_required') && !$isSalt) {
        $pw .= mb_substr(special_shuffle($special), 0, $n);
    }
    
    $pw = mb_substr($pw, - $length);
    
    return special_shuffle($pw);
}

function special_shuffle($str = null)
{
    $len = mb_strlen($str);
    $sploded = array();
    while ($len -- > 0) {
        $sploded[] = mb_substr($str, $len, 1);
    }
    shuffle($sploded);
    return join('', $sploded);
}

bei dem Punkt: Settings::Get('panel.password_alpha_upper') habe ich in der Datenbank die Ausgabe "1"... bedeute dies das die if frage dann 

if(1) { 

lautet?

 

das selbe auch bei "Settings::Get('panel.password_numeric')" & "Settings::Get('panel.password_special_char_required')"

 

danke schonmal für eure Antwort

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

Das sind die Einstellungen "sollen auch Großbuchstaben benutzt werden", "sollen auch zahlen benutzt werden" und "sollen auch Sonderzeichen genutzt werden"... Wenn da eine 1 rauskommt hast du die Einstellung aktiviert. Man würde ohne die Einstellungen abzufragen aber nicht auf if(1) bzw if(true) abfragen, das wäre sowieso immer wahr.

 

Genauso wie "$length = 0 > 3 ? 0 : 10;" - wann ist denn bitte 0 jemals größer als 3??? Das macht absolut null Sinn.

Link to comment
Share on other sites

Ich habe mir nun mal das ganze weiter angeschaut da ich am überlegen bin wie ich in meinem Shoutcast Interface die Passwörter besser Schützen kann und habe mir mal die Passwort Validierung hier angeschaut, aber irgendwie komme ich hier auf keinen Nenner...

 

bei Froxlor habe ich SHA256 Aktiviert. Froxlor klappt auch alles, aber habe mir das angeschaut und wollt das selber auch verwenden aber hier steh ich gerade im Stau und komm nicht hinter den Gedanken warum es nicht klappt.

$cryptPassword = crypt($password, '$5$' . generatePassword(true).  generatePassword(true));

function generatePassword($isSalt = false) {
    $alpha_lower = 'abcdefghijklmnopqrstuvwxyz';
    $alpha_upper = strtoupper($alpha_lower);
    $numeric = '0123456789';
    $special = '!?<>§$%+#=@';
    $length = 0 > 3 ? 0 : 10;
    
    $pw = special_shuffle($alpha_lower);
    $n = floor(($length) / 4);
    
    $pw .= mb_substr(special_shuffle($alpha_upper), 0, $n);
    $pw = mb_substr($pw, - $length);
    
    return special_shuffle($pw);
}

function special_shuffle($str = null)
{
    $len = mb_strlen($str);
    $sploded = array();
    while ($len -- > 0) {
        $sploded[] = mb_substr($str, $len, 1);
    }
    shuffle($sploded);
    return join('', $sploded);
}

function validatePasswordLogin($userinfo, $pw = null) {
	$systype = 3; // SHA256
	$pwd_hash = $userinfo;

	$update_hash = false;
	// check for good'ole md5
	if (strlen($pwd_hash) == 32 && ctype_xdigit($pwd_hash)) {
		$pwd_check = md5($password);
		$update_hash = true;
	} else {
		// cut out the salt from the hash
		$pwd_salt = str_replace(substr(strrchr($pwd_hash, "$"), 1), "", $pwd_hash);
		// create same hash to compare
		$pwd_check = crypt($password, $pwd_salt);
		// check whether the hash needs to be updated
		$hash_type_chk = substr($pwd_hash, 0, 3);
		if (($systype == 1 && $hash_type_chk != '$1$') || // MD5
			($systype == 2 && $hash_type_chk != '$2$') || // BLOWFISH
			($systype == 3 && $hash_type_chk != '$5$') || // SHA256
			($systype == 4 && $hash_type_chk != '$6$')    // SHA512
		) {
			$update_hash = true;
		}
	}

	if ($pwd_hash == $pwd_check) {
		// check for update of hash (only if our database is ready to handle the bigger string)
		if ($update_hash) {
			// "DB Update";
		}
        return "Okay";
        //return true;

	}
	return "Fehler";
        //return false;

}

print_r(validatePasswordLogin($userinfo, $pw));

so dann zu den Fragen...

1. zu der Funktion makeCryptPassword ($password) ...
 => Wird das Passwort hier in Klartext übergeben?

 

2. zu der Funktion validatePasswordLogin( ... ) ...
=> Hier wird doch das Passwort auseinnander gefummelt und irgendwie verglichen... aber wie macht der das? Komme hier auf keinen nenner sodass ich kein Posetive Antwort bekomme.

 

Hoffe das mir hierbei einer helfen kann das zu verstehen.

Link to comment
Share on other sites

1) immernoch:

$length = 0 > 3 ? 0 : 10;

macht absolut keinen Sinn, 0 wird niemals größer sein als 3...

 

2) makeCryptPassword bekommt natürlich ein Klartext-Kennwort übergeben, diese Funktion soll ja einen Passwort-Hash erstellen, sagt eigentlich der Funktionsname schon...

 

3) validatePasswordLogin macht weitaus mehr als nur das kennwort zu validieren, achtung. Hier kommt es drauf an wie die Kennwörter abgelegt sind. Was da mit dem Passwort geschieht steht doch in den Code-Kommentaren...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...