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
.
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
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
!
HowTo: MySQL unter vb.net und ASP
von Pestilence am Okt.14, 2009, unter Schnipsel & HowTo
 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=" & Database & _
";Data Source=" & Host & ";User Id=" & User & ";Password=" & 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.
Besuche doch mal folgende Seiten!
Ein paar sehr interessante Seiten....
Archives
All entries, chronologically...







