/openplans_update_wp.py

https://github.com/socialplanning/opencore-wordpress-mu-scripts · Python · 208 lines · 195 code · 12 blank · 1 comment · 26 complexity · db62f4c0ab877c7555b9d15f8247d48a MD5 · raw file

  1. #!/usr/bin/env python
  2. import hmac
  3. import sha
  4. import urllib
  5. import os
  6. def get_secret(topp_secret_filename):
  7. f = open(topp_secret_filename, 'rb')
  8. try:
  9. return f.read().strip()
  10. finally:
  11. f.close()
  12. def create_blog(blog_base, domain, path, title, topp_secret_filename):
  13. url = blog_base + '/openplans-create-blog.php'
  14. data = {
  15. 'domain': domain,
  16. 'path': path,
  17. 'title': title,
  18. }
  19. sig = hmac.new(get_secret(topp_secret_filename), domain, sha).digest()
  20. sig = sig.encode('base64').strip()
  21. data['signature'] = sig
  22. data = urllib.urlencode(data)
  23. print 'Opening url: %s' % url
  24. f = urllib.urlopen(url, data)
  25. res = f.read()
  26. if f.geturl() != url:
  27. print 'Got a redirect: %s' % f.geturl()
  28. f.close()
  29. return res
  30. def add_user(blog_base, username, email, topp_secret_filename):
  31. url = blog_base + '/openplans-create-user.php'
  32. data = {
  33. 'username': username,
  34. 'email': email
  35. }
  36. sig = hmac.new(get_secret(topp_secret_filename), username, sha).digest()
  37. sig = sig.encode('base64').strip()
  38. data['signature'] = sig
  39. data = urllib.urlencode(data)
  40. print 'Opening url: %s' % url
  41. f = urllib.urlopen(url, data)
  42. res = f.read()
  43. if f.geturl() != url:
  44. print 'Got a redirect: %s' % f.geturl()
  45. f.close()
  46. return res
  47. def remove_user(blog_base, username, topp_secret_filename):
  48. url = blog_base + '/openplans-remove-user.php'
  49. data = {
  50. 'username': username,
  51. }
  52. sig = hmac.new(get_secret(topp_secret_filename), username, sha).digest()
  53. sig = sig.encode('base64').strip()
  54. data['signature'] = sig
  55. data = urllib.urlencode(data)
  56. print 'Opening url: %s' % url
  57. f = urllib.urlopen(url, data)
  58. res = f.read()
  59. if f.geturl() != url:
  60. print 'Got a redirect: %s' % f.geturl()
  61. f.close()
  62. return res
  63. def add_user_to_blog(blog_base, username, domain,role , topp_secret_filename):
  64. url = blog_base + '/openplans-add-usertoblog.php'
  65. data = {
  66. 'username': username,
  67. 'domain': domain,
  68. 'role': role
  69. }
  70. sig = hmac.new(get_secret(topp_secret_filename), domain, sha).digest()
  71. sig = sig.encode('base64').strip()
  72. data['signature'] = sig
  73. data = urllib.urlencode(data)
  74. print 'Opening url: %s' % url
  75. f = urllib.urlopen(url, data)
  76. res = f.read()
  77. if f.geturl() != url:
  78. print 'Got a redirect: %s' % f.geturl()
  79. f.close()
  80. return res
  81. def change_role(blog_base, username, domain, newrole , topp_secret_filename):
  82. url = blog_base + '/openplans-change-role.php'
  83. data = {
  84. 'username': username,
  85. 'domain': domain,
  86. 'newrole': newrole
  87. }
  88. sig = hmac.new(get_secret(topp_secret_filename), domain, sha).digest()
  89. sig = sig.encode('base64').strip()
  90. data['signature'] = sig
  91. data = urllib.urlencode(data)
  92. print 'Opening url: %s' % url
  93. f = urllib.urlopen(url, data)
  94. res = f.read()
  95. if f.geturl() != url:
  96. print 'Got a redirect: %s' % f.geturl()
  97. f.close()
  98. return res
  99. def remove_user_from_blog(blog_base, username, domain, topp_secret_filename):
  100. url = blog_base + '/openplans-remove-userfromblog.php'
  101. data = {
  102. 'username': username,
  103. 'domain': domain
  104. }
  105. sig = hmac.new(get_secret(topp_secret_filename), domain, sha).digest()
  106. sig = sig.encode('base64').strip()
  107. data['signature'] = sig
  108. data = urllib.urlencode(data)
  109. print 'Opening url: %s' % url
  110. f = urllib.urlopen(url, data)
  111. res = f.read()
  112. if f.geturl() != url:
  113. print 'Got a redirect: %s' % f.geturl()
  114. f.close()
  115. return res
  116. def change_email(blog_base, username, email, topp_secret_filename):
  117. url = blog_base + '/openplans-change-email.php'
  118. data = {
  119. 'username': username,
  120. 'email': email
  121. }
  122. sig = hmac.new(get_secret(topp_secret_filename), username, sha).digest()
  123. sig = sig.encode('base64').strip()
  124. data['signature'] = sig
  125. data = urllib.urlencode(data)
  126. print 'Opening url: %s' % url
  127. f = urllib.urlopen(url, data)
  128. res = f.read()
  129. if f.geturl() != url:
  130. print 'Got a redirect: %s' % f.geturl()
  131. f.close()
  132. return res
  133. if __name__ == '__main__':
  134. import sys
  135. script, args = os.path.basename(sys.argv[0]), sys.argv[1:]
  136. if len(args) == 0:
  137. print 'Usage: %s blog_url action [parms for actions] /path/to/secret.txt\n' \
  138. ' e.g. %s http://localhost:8090 adduser username email /usr/local/topp/var/lib/secret.txt \n' \
  139. ' e.g. %s http://localhost:8090 changerole project username newrole /usr/local/topp/var/lib/secret.txt \n' \
  140. ' e.g. %s http://localhost:8090 changeemail username newemail /usr/local/topp/var/lib/secret.txt \n' \
  141. ' e.g. %s http://localhost:8090 createblog someproj.openplans.org my_title /usr/local/topp/var/lib/secret.txt \n' \
  142. ' e.g. %s http://localhost:8090 addusertoblog username someproj.openplans.org role /usr/local/topp/var/lib/secret.txt \n' \
  143. ' e.g. %s http://localhost:8090 removeuserfromblog username someproj.openplans.org /usr/local/topp/var/lib/secret.txt \n' \
  144. ' e.g. %s http://localhost:8090 removeuser username /usr/local/topp/var/lib/secret.txt \n' \
  145. % (script, script,script, script, script, script, script, script )
  146. sys.exit(2)
  147. blog_base = args[0]
  148. action = args[1]
  149. print "the action you selected is "+action
  150. if (action == 'adduser'):
  151. username = args[2]
  152. email = args[3]
  153. topp_secret_filename = args[4]
  154. res = add_user(blog_base, username, email, topp_secret_filename)
  155. print res or 'no response'
  156. elif (action == 'changerole'):
  157. domain = args[2]
  158. username = args[3]
  159. newrole = args[4]
  160. topp_secret_filename = args[5]
  161. res = change_role(blog_base, username, domain, newrole, topp_secret_filename)
  162. print res or 'no response'
  163. elif (action == 'changeemail'):
  164. username = args[2]
  165. newemail = args[3]
  166. topp_secret_filename = args[4]
  167. res = change_email(blog_base, username, newemail, topp_secret_filename)
  168. print res or 'no response'
  169. elif (action == 'createblog'):
  170. domain = args[2]
  171. title = args[3]
  172. topp_secret_filename = args[4]
  173. res = create_blog(blog_base, domain, '/blog', title, topp_secret_filename)
  174. print res or 'no response'
  175. elif (action == 'addusertoblog'):
  176. domain = args[3]
  177. username = args[2]
  178. role = args[4]
  179. topp_secret_filename = args[5]
  180. res = add_user_to_blog(blog_base, username, domain, role ,topp_secret_filename)
  181. print res or 'no response'
  182. elif (action == 'removeuserfromblog'):
  183. domain = args[3]
  184. username = args[2]
  185. topp_secret_filename = args[4]
  186. res = remove_user_from_blog(blog_base, username, domain, topp_secret_filename)
  187. print res or 'no response'
  188. elif (action == 'removeuser'):
  189. username = args[2]
  190. topp_secret_filename = args[3]
  191. print "do not use this yet. It hasn't been decided how this will be implemented"
  192. sys.exit(2)
  193. res = remove_user(blog_base, username, topp_secret_filename)
  194. print res or 'no response'
  195. else:
  196. print "illegal action"