111 lines
2.3 KiB
Python
111 lines
2.3 KiB
Python
|
import lxml.html
|
||
|
import aterrors
|
||
|
|
||
|
class AternosServer:
|
||
|
|
||
|
def __init__(self, servid, atconn):
|
||
|
|
||
|
self.servid = servid
|
||
|
self.atconn = atconn
|
||
|
|
||
|
servreq = self._atserver_request(
|
||
|
'https://aternos.org/server',
|
||
|
self.atconn.REQGET
|
||
|
)
|
||
|
servtree = lxml.html.fromstring(servreq.content)
|
||
|
|
||
|
servinfo = servtree.xpath(
|
||
|
'//div[@class="server-bottom-info server-info"]' + \
|
||
|
'/div[@class="server-info-container"]' + \
|
||
|
'/div[@class="server-info-box"]' + \
|
||
|
'/div[@class="server-info-box-body"]' + \
|
||
|
'/div[@class="server-info-box-value"]/span'
|
||
|
)
|
||
|
self._address = servinfo[0].text
|
||
|
self._software = servinfo[1].text
|
||
|
self._version = servinfo[2].text
|
||
|
|
||
|
self.atconn.get_token(servreq.content)
|
||
|
self.atconn.generate_sec()
|
||
|
|
||
|
def start(self, accepteula=True):
|
||
|
|
||
|
startreq = self._atserver_request(
|
||
|
'https://aternos.org/panel/ajax/start.php',
|
||
|
self.atconn.REQGET, sendtoken=True
|
||
|
)
|
||
|
startresult = startreq.json()
|
||
|
|
||
|
if startresult['success']:
|
||
|
return
|
||
|
|
||
|
error = startresult['error']
|
||
|
if error == 'eula' and accepteula:
|
||
|
self.eula()
|
||
|
elif error == 'eula':
|
||
|
raise aterrors.AternosServerStartError(
|
||
|
'EULA was not accepted. Use start(accepteula=True)'
|
||
|
)
|
||
|
elif error == 'already':
|
||
|
raise aterrors.AternosServerStartError(
|
||
|
'Server is already running'
|
||
|
)
|
||
|
else:
|
||
|
raise aterrors.AternosServerStartError(
|
||
|
f'Unable to start server. Code: {error}'
|
||
|
)
|
||
|
|
||
|
def stop(self):
|
||
|
|
||
|
self._atserver_request(
|
||
|
'https://aternos.org/panel/ajax/stop.php',
|
||
|
self.atconn.REQGET, sendtoken=True
|
||
|
)
|
||
|
|
||
|
def cancel(self):
|
||
|
|
||
|
self._atserver_request(
|
||
|
'https://aternos.org/panel/ajax/cancel.php',
|
||
|
self.atconn.REQGET, sendtoken=True
|
||
|
)
|
||
|
|
||
|
def restart(self):
|
||
|
|
||
|
self._atserver_request(
|
||
|
'https://aternos.org/panel/ajax/restart.php',
|
||
|
self.atconn.REQGET, sendtoken=True
|
||
|
)
|
||
|
|
||
|
def eula(self):
|
||
|
|
||
|
self._atserver_request(
|
||
|
'https://aternos.org/panel/ajax/eula.php',
|
||
|
self.atconn.REQGET, sendtoken=True
|
||
|
)
|
||
|
|
||
|
def _atserver_request(
|
||
|
self, url, method, params=None,
|
||
|
data=None, headers=None, sendtoken=False):
|
||
|
|
||
|
return self.atconn.request_cloudflare(
|
||
|
url=url, method=method,
|
||
|
params=params, data=data,
|
||
|
headers=headers,
|
||
|
reqcookies={
|
||
|
'ATERNOS_SERVER': self.servid
|
||
|
},
|
||
|
sendtoken=sendtoken
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def address(self):
|
||
|
return self._address
|
||
|
|
||
|
@property
|
||
|
def software(self):
|
||
|
return self._software
|
||
|
|
||
|
@property
|
||
|
def version(self):
|
||
|
return self._version
|