146 lines
4.0 KiB
Python
146 lines
4.0 KiB
Python
import json
|
|
import socket
|
|
|
|
class LonaDB:
|
|
def __init__(self, host, port, name, password):
|
|
self.host = host
|
|
self.port = port
|
|
self.name = name
|
|
self.password = password
|
|
|
|
def make_id(self, length):
|
|
import random
|
|
import string
|
|
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(length))
|
|
|
|
def send_request(self, action, data):
|
|
process_id = self.make_id(5)
|
|
request = json.dumps({
|
|
'action': action,
|
|
'login': {
|
|
'name': self.name,
|
|
'password': self.password
|
|
},
|
|
'process': process_id,
|
|
**data
|
|
})
|
|
|
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
|
s.connect((self.host, self.port))
|
|
s.sendall(request.encode())
|
|
response = s.recv(4096).decode()
|
|
return json.loads(response)
|
|
|
|
def create_function(self, name, content):
|
|
data = {
|
|
'function': {
|
|
'name': name,
|
|
'content': content
|
|
}
|
|
}
|
|
return self.send_request('add_function', data)
|
|
|
|
def execute_function(self, name):
|
|
data = {'name': name}
|
|
return self.send_request('execute_function', data)
|
|
|
|
def get_tables(self, user):
|
|
data = {'user': user}
|
|
return self.send_request('get_tables', data)
|
|
|
|
def get_table_data(self, table):
|
|
data = {'table': table}
|
|
return self.send_request('get_table_data', data)
|
|
|
|
def delete_table(self, table):
|
|
data = {'table': {'name': table}}
|
|
return self.send_request('delete_table', data)
|
|
|
|
def create_table(self, table):
|
|
data = {'table': {'name': table}}
|
|
return self.send_request('create_table', data)
|
|
|
|
def set_variable(self, table, name, value):
|
|
data = {
|
|
'table': {'name': table},
|
|
'variable': {
|
|
'name': name,
|
|
'value': value
|
|
}
|
|
}
|
|
return self.send_request('set_variable', data)
|
|
|
|
def remove_variable(self, table, name):
|
|
data = {
|
|
'table': {'name': table},
|
|
'variable': {'name': name}
|
|
}
|
|
return self.send_request('remove_variable', data)
|
|
|
|
def get_variable(self, table, name):
|
|
data = {
|
|
'table': {'name': table},
|
|
'variable': {'name': name}
|
|
}
|
|
return self.send_request('get_variable', data)
|
|
|
|
def get_users(self):
|
|
data = {}
|
|
return self.send_request('get_users', data)
|
|
|
|
def create_user(self, name, password):
|
|
data = {
|
|
'user': {
|
|
'name': name,
|
|
'password': password
|
|
}
|
|
}
|
|
return self.send_request('create_user', data)
|
|
|
|
def delete_user(self, name):
|
|
data = {'user': {'name': name}}
|
|
return self.send_request('delete_user', data)
|
|
|
|
def check_password(self, name, password):
|
|
data = {
|
|
'checkPass': {
|
|
'name': name,
|
|
'pass': password
|
|
}
|
|
}
|
|
return self.send_request('check_password', data)
|
|
|
|
def check_permission(self, name, permission):
|
|
data = {
|
|
'permission': {
|
|
'user': name,
|
|
'name': permission
|
|
}
|
|
}
|
|
return self.send_request('check_permission', data)
|
|
|
|
def remove_permission(self, name, permission):
|
|
data = {
|
|
'permission': {
|
|
'user': name,
|
|
'name': permission
|
|
}
|
|
}
|
|
return self.send_request('remove_permission', data)
|
|
|
|
def get_permissions_raw(self, name):
|
|
data = {'user': name}
|
|
return self.send_request('get_permissions_raw', data)
|
|
|
|
def add_permission(self, name, permission):
|
|
data = {
|
|
'permission': {
|
|
'user': name,
|
|
'name': permission
|
|
}
|
|
}
|
|
return self.send_request('add_permission', data)
|
|
|
|
def eval(self, func):
|
|
data = {'function': func}
|
|
return self.send_request('eval', data) |