Files
OpenCellular/manufacturing/software/mods/misc.py

83 lines
1.6 KiB
Python
Executable File

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# File: misc.py
#
# Miscellaneous support routines.
#
import socket
import os, os.path
import time
# This function opens a UNIX socket in the role of server,
# launches a child process, accepts the child's connection,
# and finally returns the connection and the socket file name.
class open_sock():
fn = ''
sf = ''
pid = ''
conn = ''
addr = ''
lfn = ''
olfn = ''
lfh = ''
def __init__(self):
def child():
pn = '/usr/local/fbin/fbt'
os.execl(pn, pn)
os._exit(99)
self.fn = '/tmp/fbt_sock'
if os.path.exists(self.fn):
os.remove(self.fn)
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server.bind(self.fn)
server.listen(1)
self.pid = os.fork()
if self.pid == 0:
child()
self.conn, self.addr = server.accept()
self.lfn = '/var/log/fbt/gui.log'
self.olfn = '/var/log/fbt/gui.log.old'
if os.path.isfile(self.olfn):
os.unlink(self.olfn)
if os.path.isfile(self.lfn):
os.rename(self.lfn, self.olfn)
self.lfh = open(self.lfn, mode='wt')
# self.lfh.truncate()
self.sf = self.conn.makefile()
def get_conn(self):
return self.conn
def get_fn(self):
return self.fn
def get_pid(self):
return self.pid
def send_command(self, cmd):
self.conn.send((cmd + '\n').encode('utf-8'))
self.lfh.write('> ' + cmd + '\n')
def sock_reply(self):
sf = self.sf
line = sf.readline().strip()
self.lfh.write('< ' + line + '\n')
return line
def sock_close(self):
self.lfh.close()
self.conn.close()
return os.waitpid(self.pid, 0)
def mk_sock():
osock = open_sock()
return osock