Guest User

Untitled

a guest
Nov 22nd, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1. __author__ = 'cruor'
  2. import subprocess
  3. import paramiko
  4. from decorators import async
  5. import threading
  6. import os
  7. import time
  8. basedir = os.path.abspath(os.path.dirname(__file__))
  9. upload_dir = os.path.join(basedir, 'tmp')
  10. #Handles everything to do with remote server access, such as deploying servers to remote locations,
  11. #as well as starting, stopping and communicating with these servers.as
  12. class Server(object):
  13. #starts the server using subprocess.Popen, and using the minecraft.sh script with the 'start' argument
  14. @async
  15. def serverstart(self, server, user):
  16. ssh = paramiko.SSHClient()
  17. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  18. ssh.connect(server, username='minecraft', password='minecraft')
  19. ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("/etc/init.d/minecraft_server start "+user)
  20. print ssh_stdout.readlines()
  21. #ssh_stdout.flush()
  22. #Stops the server using subprocess.Popen, using the minecraft.sh script with the 'stop' argument
  23. @async
  24. def serverstop(self, server, user):
  25. ssh = paramiko.SSHClient()
  26. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  27. ssh.connect(server, username='minecraft', password='minecraft')
  28. ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("/etc/init.d/minecraft_server stop "+user)
  29. print ssh_stdout.readlines()
  30. def servercreate(self, server, user, port):
  31. ssh = paramiko.SSHClient()
  32. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  33. ssh.connect(server, username='minecraft', password='minecraft')
  34. ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("/etc/init.d/minecraft_server create "+user+" "+port)
  35. ssh.exec_command('cp ~/eula.txt ~/worlds/'+user+'/eula.txt')
  36. return ssh_stdout.readlines()
  37. @async
  38. def startvent(self, server, user):
  39. ssh = paramiko.SSHClient()
  40. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  41. ssh.connect(server, username='loxus', password='pp33100!')
  42. time.sleep(3)
  43. ssh.exec_command("cd /home/loxus/ventriloservers/"+user+"; ./ventrilo_srv-Linux -d -r/home/loxus/misc/key")
  44. @async
  45. def stopvent(self, server, user):
  46. ssh = paramiko.SSHClient()
  47. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  48. ssh.connect(server, username='loxus', password='pp33100!')
  49. ssh.exec_command("/home/loxus/stoptest.sh /home/loxus/ventriloservers/"+user+"/ventrilo_srv.pid")
  50. def readconsole(self, server, user):
  51. ssh = paramiko.SSHClient()
  52. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  53. ssh.connect(server, username='minecraft', password='minecraft')
  54. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("tail --lines 15 /home/minecraft/worlds/"+user+"/console.out")
  55. return ssh_stdin.readlines()
  56. #Method for sending commands to server
  57. @async
  58. def servercommand(self, server, user, command):
  59. ssh = paramiko.SSHClient()
  60. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  61. ssh.connect(server, username='minecraft', password='minecraft')
  62. ssh.exec_command("/etc/init.d/minecraft_server send "+user+" "+command)
  63. #Method to get the server.properties file
  64. def readproperties(self, server, user):
  65. ssh = paramiko.SSHClient()
  66. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  67. ssh.connect(server, username='minecraft', password='minecraft')
  68. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("tail --lines=35 /home/minecraft/worlds/"+user+"/server.properties")
  69. return ssh_stdin.readlines()
  70. #Method for sending files
  71. def sendfile(self, server, filename, user):
  72. ssh = paramiko.SSHClient()
  73. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  74. ssh.connect(server, username='minecraft', password='minecraft')
  75. sftp = ssh.open_sftp()
  76. localpath = upload_dir+'/' + filename
  77. remotepath = '/home/minecraft/worlds/'+user+'/'+filename
  78. sftp.put(localpath, remotepath)
  79. sftp.close()
  80. ssh.close()
  81. def sendvent(self, server, user):
  82. ssh = paramiko.SSHClient()
  83. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  84. ssh.connect(server, username='loxus', password='pp33100!')
  85. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("mkdir /home/loxus/ventriloservers/"+user)
  86. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("cp -r /home/loxus/misc/ventpro.zip /home/loxus/ventriloservers/"+user)
  87. return ssh_stdin.readlines()
  88. def deployvent(self, user, filename, server):
  89. homedir = "/home/loxus/ventriloservers/"+user+"/"
  90. ssh = paramiko.SSHClient()
  91. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  92. ssh.connect(server, username='loxus', password='pp33100!')
  93. ssh.exec_command("unzip "+homedir+filename+" -d "+homedir+"; chmod 777 "+homedir+"ventrilo_srv-Linux")
  94. time.sleep(1)
  95. ssh.exec_command("python /home/loxus/editinit.py -w "+user+" -o intf -v "+str(server)+" -c Intf")
  96. def readventprops(self, server, user):
  97. ssh = paramiko.SSHClient()
  98. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  99. ssh.connect(server, username='loxus', password='pp33100!')
  100. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("tail --lines=35 /home/loxus/ventriloservers/"+user+"/ventrilo_srv.ini")
  101. return ssh_stdin.readlines()
  102. ssh.close()
  103. @async
  104. def editventprops(self, server, user, key, value):
  105. ssh = paramiko.SSHClient()
  106. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  107. ssh.connect(server, username='loxus', password='pp33100!')
  108. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("python /home/loxus/editinit.py -w "+user+" -o "+key+" -v " + value+" -c Server")
  109. return ssh_stdin.readlines()
  110. ssh.close()
  111. @async
  112. def unzip(self, server, user, filename):
  113. homedir = "/home/minecraft/worlds/"+user+"/"
  114. ssh = paramiko.SSHClient()
  115. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  116. ssh.connect(server, username='minecraft', password='minecraft')
  117. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("unzip "+homedir+filename+" -d "+homedir)
  118. return ssh_stdin.readlines()
  119. #Method for editing server.properties
  120. @async
  121. def editproperties(self, server, user, key, value):
  122. ssh = paramiko.SSHClient()
  123. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  124. ssh.connect(server, username='minecraft', password='minecraft')
  125. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("python /home/minecraft/mcprop.py -w "+str(user)+" -o "+str(key)+" -v "+str(value))
  126. return ssh_stdin.readlines()
  127. @async
  128. def deleteserv(self, server, user):
  129. ssh = paramiko.SSHClient()
  130. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  131. ssh.connect(server, username='minecraft', password='minecraft')
  132. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("rm -rf /home/minecraft/worlds/"+user)
  133. return ssh_stdin.readlines()
  134. @async
  135. def backupserv(self, server, user):
  136. ssh = paramiko.SSHClient()
  137. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  138. ssh.connect(server, username='minecraft', password='minecraft')
  139. ssh.exec_command("rm -rf /home/minecraft/backups/"+user)
  140. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("/etc/init.d/minecraft_server backup "+user)
  141. return ssh_stdin.readlines()
  142. @async
  143. def restorebackup(self, server, user):
  144. ssh = paramiko.SSHClient()
  145. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  146. ssh.connect(server, username='minecraft', password='minecraft')
  147. ssh.exec_command("rm -rf /home/minecraft/worlds/"+user)
  148. ssh.exec_command("mv /home/minecraft/backups/"+user+" /home/minecraft/worlds")
  149. #return ssh_stdin.readlines()
  150. def serverstatus(self, server, user):
  151. ssh = paramiko.SSHClient()
  152. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  153. ssh.connect(server, username='minecraft', password='minecraft')
  154. ssh_stdout, ssh_stdin, ssh_stderr = ssh.exec_command("/etc/init.d/minecraft_server status "+user)
  155. return ssh_stdin.readlines()
Add Comment
Please, Sign In to add comment