Schnipsel & HowTo

Schnipselchen per LDAP AD Passwort setzen

von Pestilence am Aug.03, 2010, unter Schnipsel & HowTo

Tja wer brauch sowas nicht mal hier oder da? Wer es braucht kann es gern verwenden, ich denke der Vorgang ist recht simpel, aber ich wollt es auch nochmal für mich selbst hier abgelegt haben. Der Schnipsel sollte in der Lage sein das Passwort in der AD über LDAP zu ändern, viel Spaß beim probieren.

<?php
$username = $_POST['user_name'];

$ldap = ldap_connect($config['ldapServers'], 636);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

 if ($ldap)
{
	$bind = ldap_bind($ldap, $config['ldapUsername'], $config['ldapPassword']);
	$filter="(sAMAccountName=$username)";
	$result = ldap_search($ldap,"dc=yourcompany,dc=com",$filter);

	ldap_sort($ldap,$result,"sn");
	$info = ldap_get_entries($ldap, $result);

	for ($i=0; $i<$info["count"]; $i++)
	{
		echo "<p>You are changing the password for <b> ". $info[$i]["givenname"][0] .", " . $info[$i]["sn"][0] ."</b> (" . $info[$i]["samaccountname"][0] .") to <b>" . $_POST['user_pass'] ."</b></p>\n";
		$passwd1 = $_POST['user_pass'];
		$userDn = $info[$i]["distinguishedname"][0];
		$newPassword = $passwd1;
		$newPassword = "\"" . $newPassword . "\"";
		$len = strlen($newPassword);

		for ($i = 0; $i < $len; $i++)
		{
			$newPassw .= "{$newPassword{$i}}\000";}
			$newPassword = $newPassw;
			$userdata["unicodePwd"] = $newPassword;
			$result = ldap_mod_replace($ldap, $userDn , $userdata);

			if ($result)
				echo "Your password has been changed!" ;
			else
				echo "There was a problem changing your password, please call IT for help";
		}
}

@ldap_close($ldap);
?>

Sorry wegen der Formatierung etwas wenig Platz dafür hier :-) .

Kommentar schreiben :, , , mehr...

HowTo: Unix Timestamp und vb.net

von Pestilence am Okt.19, 2009, unter Schnipsel & HowTo

Da hatte ich doch letztens folgende Frage vor mir, was stelle ich nun mit den Timestamps der MySQL Datenbank an? Zudem ist es üblich in PHP den Timestamp für Zeitberechnungen zu benutzen. Von Haus aus kann .net mit einem Timestamp auch nichts anfangen, also hilft man mit zwei Methoden etwas nach. Einfach in die Helferklasse einbauen und gut ist. :-)

  Public Shared Function GetTimestamp(ByVal FromDateTime As DateTime) As Integer
    Dim Startdate As DateTime = #1/1/1970#
    Dim Spanne As TimeSpan

    Spanne = FromDateTime.Subtract(Startdate)
    Return CType(Math.Abs(Spanne.TotalSeconds()), Integer)
  End Function

  Public Shared Function GetDateFromTimestamp(ByVal unixTimestamp As Integer) As DateTime
    Dim Span As TimeSpan
    Dim Startdate As Date = #1/1/1970#

    If unixTimestamp = 0 Then Return Startdate

    Span = New TimeSpan(0, 0, unixTimestamp)
    Return Startdate.Add(Span)
  End Function
Kommentar schreiben :, , , , , mehr...

HowTo: MySQL Daten in ein Datagrid laden

von Pestilence am Okt.14, 2009, unter Schnipsel & HowTo

Kleine Ergänzung für die Klasse aus dem ersten Schnipsel zu MySQL und vb.net, Allerdings wird hier explezit zum Verständnis hier nochmals ein Verbindungs-String geformt, dieser wäre in der Klasse natürlich nicht von nöten. Hier eine generelle Funktion zum füllen von Datagrids, dies beleuchtet auch die gute Zusammenarbeit von MySQL und und .net (dank des Connectors!).

  Private Sub Datagrid_fill()
      Dim Conn As New MySqlConnection   Â
      Dim da As MySqlDataAdapter        Â
      Dim dt As New DataTable
      Dim SQL As String

      Conn.ConnectionString = "server=HOST;user id=BENUTZER;password=PW;database=PASSWORT"

      SQL = "SELECT * FROM `TABELLE` WHERE `WERT1`= 'BEDINGUNG' LIMIT X"
      da = New MySqlDataAdapter(SQL, Conn)

      da.Fill(dt)

      DataGridView1.DataSource = dt

  End Sub

Nun geh ich auch etwas auf die Zeilen ein, allerdings sollte dieses Beispiel recht selbst sprechend sein. Also in den ersten Zeilen werden Ressourcen bereitgestellt. Gerade der MySqlDataAdapter in Zeile 2 ist interessant weil dieser die Adaptierung zwischen Datenbank und DataTable (später die Source für den DataGridView). Die Adaptierung findet in Zeile 10 und 12 statt. Danach ist die DataTable bereit für das DataGridView und kann seinen Dienst aufnehmen. Einfacher als man Denkt :-) !

Kommentar schreiben :, mehr...

HowTo: MySQL unter vb.net und ASP

von Pestilence am Okt.14, 2009, unter Schnipsel & HowTo

asp-net-ajax   Tja da ich ja gerade fleissig am lernen von vb.net bzw ASP.net bin, dachte ich mir hier auch eine neue Kategorie zu beleben. Und zwar die Schnipsel und HowTo Ecke. Dies dient nicht nur für muntere Sucher, sondern auch für mich als Gedächnisstütze.Ich verplane doch so gern mal was :-)

Also hier mal der erste Fall:
Wir verwirklichen einen Kundentraum in ASP.net aber der Kunde will nicht genug Flocken für einen SQL Server löhnen. Wir überlegen nicht lang, und kommen zur freien und dennoch leistungsfähigen Datenbank MySQL. Aber wie verbindet man diese beiden Welten? Na klar, ganz einfach der MySQL .net connector!

Was soll der folgende Schnipsel machen?

Imports Microsoft.VisualBasic
Imports MySql.Data.MySqlClient
Imports System

Public Class mysqlControl

 Private mysqlConnection As MySqlConnection
 Private mysqlConnectionString As String
 Private mysqlConnectionState As Boolean = False

 Public Sub New()
     Me.connectMySQLString("localhost", "benutzer", _
     "passwort", "datenbank")

     Me.connectMySQL()
 End Sub

 Private Sub connectMySQLString(ByVal Host As String, _
   ByVal User As String, ByVal Password As String, _
   ByVal Database As String)

   Me.mysqlConnectionString = "Database=" &amp; Database &amp; _
   ";Data Source=" &amp; Host &amp; ";User Id=" &amp; User &amp; ";Password=" &amp; Password
 End Sub

 Private Sub connectMySQL()
   Try
       Me.mysqlConnection = New MySqlConnection(Me.mysqlConnectionString)
       Me.mysqlConnection.Open()
       Me.mysqlConnectionState = True
   Catch ex As Exception
      Me.mysqlConnectionState = False
   End Try
 End Sub
End Class

Ganz klar doch oder? Bei der Erstellung eines Objektes dieser Klasse wird schon mal alles eingerichtet und es könnte im nächsten Zug mit eigenen Abfragen begonnen werden. Aber die Abfragen kommen im nächsten Teil, aber dies hier ist eine solide Basis. Fragen und Anmerkungen bitte in die Kommentare, ich lerne ja noch und bin für Verbesserungen immer offen.

Nächstes mal, Abfragen und Updatemethoden.

PS: Das Plugin für das Codeansicht werde ich noch wechseln.

Kommentar schreiben :, , , mehr...

Slideshow

Lade Dir den Flash Player um die Diashow zu sehen.

Besuche doch mal folgende Seiten!

Ein paar sehr interessante Seiten....