Advertisement
Guest User

Untitled

a guest
Apr 28th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Select statements for Discourse PSQL server
  2. function Get-ODBC-Data{
  3.    param([string]$query=$(throw 'query is required.'))
  4.    $conn = New-Object System.Data.Odbc.OdbcConnection
  5.   $conn.ConnectionString= "Driver={PostgreSQL Unicode(x64)};Server=discourse;Port=5432;Database=discourse;Uid=user;Pwd=password;"
  6.    $conn.open()
  7.    $cmd = New-object System.Data.Odbc.OdbcCommand($query,$conn)
  8.    $ds = New-Object system.Data.DataSet
  9.    (New-Object system.Data.odbc.odbcDataAdapter($cmd)).fill($ds) | out-null
  10.    $conn.close()
  11.    $ds.Tables[0]
  12. }
  13.  
  14. #INSERT/UPDATE/DELETE statements for Discourse PSQL server
  15. function Set-ODBC-Data{
  16.    param([string]$query=$(throw 'query is required.'))
  17.   $conn = New-Object System.Data.Odbc.OdbcConnection
  18.   $conn.ConnectionString= "Driver={PostgreSQL Unicode(x64)};Server=discourse;Port=5432;Database=discourse;Uid=user;Pwd=password;"
  19.   $cmd = new-object System.Data.Odbc.OdbcCommand($query,$conn)
  20.   $conn.open()
  21.   $cmd.ExecuteNonQuery()
  22.   $conn.close()
  23. }
  24.  
  25. #create new users in discourse
  26. function addUser($username, $name)
  27. {
  28.     $uri = "https://discourse/users.json?api_key=enter_key_here"
  29.     $body = "username=" + $username + "&name=" + $name + "&email=" + $username + "@example.com&password=Password1!!&active=true"
  30.  
  31.     Invoke-WebRequest -Headers @{} -Method POST `
  32.                   -Body $body -Uri $uri  `
  33.                   -ContentType application/x-www-form-urlencoded
  34. }
  35.  
  36. #return users in a group (name is group name, name1 is user full name, username is user's name)
  37. function GetGroupUsers($group){
  38.  
  39.     $query = "SELECT groups.id, groups.name, users.name, users.username, users.email FROM groups, group_users, users WHERE (groups.id = group_users.group_id) AND (users.id = group_users.user_id) AND (groups.name = '" + $group + "')"
  40.     return (Get-ODBC-Data -query $query)
  41. }
  42.  
  43. function GetGroupID($group){
  44.  
  45.     $query = "SELECT groups.id FROM groups WHERE (LOWER(groups.name) = LOWER('" + $group + "'))"
  46.     return (Get-ODBC-Data -query $query).id
  47. }
  48.  
  49. function GetUserID($email){
  50.     $query = "SELECT users.id FROM users WHERE (LOWER(users.email) = LOWER('" + $email + "'))"
  51.     return (Get-ODBC-Data -query $query).id  
  52. }
  53.  
  54. function AddUserToGroup($email, $group)
  55. {
  56.     $valid = "true"
  57.     $user_id = GetUserID $email
  58.     $group_id = GetGroupID $group
  59.  
  60.     foreach($groupuser in (GetGroupUsers $group))
  61.     {
  62.       if($groupuser.email -eq $email)
  63.       {
  64.         $valid = "false"
  65.       }
  66.     }
  67.  
  68.     if($valid -eq "true")
  69.     {
  70.       $id = (Get-ODBC-Data -query "SELECT MAX(id) FROM group_users").max +1
  71.       $query = "INSERT INTO group_users (id, group_id, user_id, created_at, updated_at, owner, notification_level) VALUES ('"+ $id +"','" + $group_id + "','" + $user_id + "','" + (Get-Date -Format "yyyy-MM-dd HH:mm:ss.fffff") + "','" + (Get-Date -Format "yyyy-MM-dd HH:mm:ss.fffff") + "','f','2')"
  72.       return (Set-ODBC-Data $query)
  73.       }
  74.       else
  75.       {
  76.         return $user + " is already a member of " + $group
  77.       }
  78.  
  79. }
  80.  
  81. function RemoveUserFromGroup($email, $group)
  82. {
  83.     $valid = "true"
  84.     $user_id = GetUserID $email
  85.     $group_id = GetGroupID $group
  86.  
  87.     foreach($groupuser in (GetGroupUsers $group))
  88.     {
  89.       if($groupuser.email -eq $email)
  90.       {
  91.         $valid = "false"
  92.       }
  93.     }
  94.  
  95.     if($valid -eq "false")
  96.     {
  97.       $id = (Get-ODBC-Data -query "SELECT MAX(id) FROM group_users").max +1
  98.       $query = "DELETE from group_users WHERE (user_id = '" + $user_id + "') AND (group_id = '" + $group_id + "');"
  99.       return (Set-ODBC-Data $query)
  100.       }
  101.       else
  102.       {
  103.         return $email + " is not a member of " + $group
  104.       }
  105.  
  106. }
  107.  
  108. function UpdateUserTitles()
  109. {
  110.   $query = "SELECT name, username, email, title FROM users"
  111.   $result = Get-ODBC-Data -query $query
  112.  
  113.   foreach($person in $result)
  114.   {
  115.     $email = $person.email
  116.     $ad = Get-ADUser -SearchBase "ou=Users,dc=example,dc=com" -filter {mail -eq $email} -Properties title
  117.  
  118.     if(($ad.title -ne $person.title) -and $ad.title)
  119.     {
  120.       $query = "UPDATE users SET title = '" + $ad.title + "' where email = '" + $email + "'";
  121.       Set-ODBC-Data $query
  122.     }
  123.   }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement