def handle_read(self): data = self.recv(1024) if data == '': return log.l.LogIt('RSC005', 'D', 'cmd i: %s', (data)) args = string.split(data) self.subsystem = args[0] args = args[1:] log.l.LogIt('RSC006', 'I', '%s', (str(args))) if len(args) == 0: return #-------------------- if args[0] == 'version': self.senddata = ver.getVersion() #-------------------- elif args[0] == 'stop': self.senddata = 'srv terminating' self.terminate = 1 #-------------------- elif args[0] == 'status': self.senddata = 'connections: %d' % (srvgl.srvCnt) #-------------------- elif args[0] == 'trace': if len(args) > 2: log.l.SetTraceLevel(int(args[1])) self.senddata = 'trace level %s' % (args[1]) else: self.senddata = 'trace level %d' % log.l.GetTraceLevel() #-------------------- else: self.senddata = 'command: '+args[0]+': not implemented'
base = os.path.dirname(bin) sys.path.append(os.path.normpath(base + "/../cfg")) sys.path.append(os.path.normpath(base + "/../share")) import log, msgpkt, sock, ver import basecfg # --------------------------------------- progname = "aprcmd" lversion = "1.01" # ver.showVersion(progname, lversion, rcsid) ver.setVersion(lversion) log.l = log.PathFmtLogFile(progname, "n", -1, 1024 * 1024, 30, 1) log.l.LogIt("CMD001", "I", "start %s", (ver.getVersion())) log.l.LogIt("CMD002", "I", "%s", (str(sys.argv))) # ------------------------------------------------- # handle signals def sig_end(signum, frame): log.l.LogIt("CMD003", "I", "signal %s termination", (signum)) sys.exit(1) signal.signal(signal.SIGINT, sig_end) signal.signal(signal.SIGTERM, sig_end) # ------------------------------------------------- # running on an apr, only deal with this apr! aprmode = 0
import basecfg import cmdiptbl, log, sock, ver import srvgl, srvcmd_hdlr, srvcfg, srvcfg_hdlr #------------------------------------------------ progname = 'aprsrv' lversion = '1.00' ver.showVersion(progname, lversion, rcsid) print time.asctime(time.localtime(time.time())) sys.stdout.flush() log.l = log.PathFmtLogFile(progname, 'n', srvcfg.Keep, srvcfg.MaxSize, srvcfg.MaxAge, srvcfg.TraceLevel) log.l.LogIt('RS0001', 'I', 'start %s', (ver.getVersion())) #------------------------------------------------ # handle signals def sig_end(signum, frame): log.l.LogIt('RS0002', 'I', 'signal %d termination', (signum)) sys.exit(1) def sig_child(signum, frame): try: pid, status = os.waitpid(-1, os.WNOHANG) except: pass log.l.LogIt('RS0003', 'I', 'subprocess termination', ()) signal.signal(signal.SIGHUP, signal.SIG_IGN)
def handle_read(self): data = self.recv(1024) if data == '': self.handle_close() return log.l.LogIt('RTC006', 'D', 'cmd i: %s', (data)) args = string.split(data) if len(args) == 0: return; self.mode = args[0] self.target = args[1] args = args[2:] log.l.LogIt('RTC007', '1', '%s', (str(args))) if len(args) == 0: return #-------------------- if args[0] == 'close': self.senddata.append(util.close(self.mode == 'router', self.target, args[1:])) #-------------------- elif args[0] == 'data': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': self.senddata.append(util.data(args[1:])) elif args[0] == 'dump': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': self.senddata.append(util.dump()) #-------------------- elif args[0] == 'event': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': self.senddata.append(util.event(args[1:])) #-------------------- elif args[0] == 'fb' or args[0] == 'fallback' or args[0] == 'secondary': if len(args) > 1 and args[1] == 'auto': auto = 1 else: auto = 0 if self.mode == 'domain': cfg.domain[self.target]['fallback'] = 1 self.senddata.append(util.switch_secondary(self.target, auto)) if self.mode == 'router': for i in cfg.domain.keys(): if cfg.domain[i]['apr'] == cfg.name: cfg.domain[i]['fallback'] = 1 self.senddata.append(i+' '+util.switch_secondary(i, auto)) #-------------------- elif args[0] == 'ff' or args[0] == 'fallforward' or args[0] == 'primary': if len(args) > 1 and args[1] == 'auto': auto = 1 else: auto = 0 if self.mode == 'domain': cfg.domain[self.target]['fallback'] = 0 self.senddata.append(util.switch_primary(self.target, auto)) if self.mode == 'router': for i in cfg.domain.keys(): if cfg.domain[i]['apr'] == cfg.name: cfg.domain[i]['fallback'] = 0 self.senddata.append(i+' '+util.switch_primary(i, auto)) #-------------------- elif args[0] == 'pvc': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': self.senddata.append(util.pvc(args[1:])) #-------------------- elif args[0] == 'refresh': evt_hdlr.refresh() self.senddata.append('status refreshed') #-------------------- elif args[0] == 'set': self.senddata = util.set(self.mode == 'router', self.target, args[1:]) #-------------------- elif args[0] == 'sna': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': self.senddata.append(util.sna(args[1:])) #-------------------- elif args[0] == 'status': if self.mode == 'domain': self.senddata.append(util.status(self.target)) if self.mode == 'router': for i in cfg.domain.keys(): if cfg.domain[i]['apr'] == cfg.name: self.senddata.append(i+' '+util.status(i)) if len(self.senddata) == 0: self.senddata.append('not active') #-------------------- elif args[0] == 'stop': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': log.l.LogIt('RTC008', 'I', 'command termination', ()) cfg.stopping = 1 msg = '%s terminating' % self.target self.senddata.append(msg) for i in cfg.domain.keys(): util.closeall(i) #-------------------- elif args[0] == 'trace': if self.mode == 'domain': self.senddata.append('command: '+args[0]+': address only to router') if self.mode == 'router': if len(args) > 1: log.l.SetTraceLevel(int(args[1])) self.senddata.append('trace level %s' % (args[1])) log.l.LogIt('RTC009', 'I', 'command trace %s', (args[1])) else: level = log.l.GetTraceLevel() self.senddata.append('trace level %d' % (level)) log.l.LogIt('RTC010', 'I', 'command get trace: %d', (level)) #-------------------- elif args[0] == 'version': msg = ver.getVersion() if cfg.snasrv_version != '': msg = msg + ' snasrv: ' + cfg.snasrv_version self.senddata.append(msg) #-------------------- else: self.senddata.append('command: '+args[0]+': not implemented')
def handle_read(self): data = self.recv(1024) if data == '': self.handle_close() return log.l.LogIt('CTL011', 'D', 'cmd i: %s', (data)) args = string.split(data) if len(args) == 0: return log.l.LogIt('CTL012', '1', '%s', (str(args))) #-------------------- if args[0] == 'poweroff': global cmdobj, poweroff if os.getuid() != 0 and os.geteuid() != 0: self.senddata = 'not authorized to power off' log.l.LogIt('CTL013', 'I', 'not authorized to poweroff', ()) return self.senddata = '%s powering off' % name log.l.LogIt('CTL014', 'I', 'command poweroff', ()) poweroff = 1 cmdobj.handle_close() cmdobj = None #-------------------- elif args[0] == 'reboot': global cmdobj, reboot if os.getuid() != 0 and os.geteuid() != 0: self.senddata = 'not authorized to reboot' log.l.LogIt('CTL015', 'I', 'not authorized to reboot', ()) return self.senddata = '%s rebooting' % name log.l.LogIt('CTL016', 'I', 'command reboot', ()) reboot = 1 cmdobj.handle_close() cmdobj = None #-------------------- elif args[0] == 'stop': global cmdobj self.senddata = '%s ctrl terminating' % name log.l.LogIt('CTL017', 'I', 'command termination', ()) cmdobj.handle_close() cmdobj = None #-------------------- elif args[0] == 'config': global hwaddr, interface, hostname self.senddata = '%s %s %s %s' % ( hostname, interface, inetaddr, hwaddr) #-------------------- elif args[0] == 'next': global hwaddr, interface f = open('/etc/rc.config', 'r') lines = f.readlines() f.close() for l in lines: if re.search('^IFCONFIG_0', l): break t = string.split(l) nip = string.split(t[0], '"')[1] f = open('/etc/HOSTNAME', 'r') nhostname = string.split(f.readline())[0] f.close() self.senddata = '%s %s %s %s' % ( nhostname, interface, nip, hwaddr) #-------------------- elif args[0] == 'new': if len(args) != 2: self.senddata = 'new: invalid format' log.l.LogIt('CTL019', 'I', 'new: invalid format', ()) return nhostname = args[1] nip = socket.gethostbyname(nhostname) #------------- # edit /etc/rc.config: IPADDR, IFCONFIG, FQHOSTNAME try: rc = open('/etc/rc.config', 'r') config = rc.readlines() rc.close() rc = open('/etc/rc.config.new', 'w') for l in config: if re.search('^IPADDR_0="', l): l = 'IPADDR_0="%s"\n' % nip if re.search('^IFCONFIG_0="', l): w = string.split(l) l = 'IFCONFIG_0="'+nip for i in range(1, len(w)): l = l + ' ' + w[i] l = l + '\n' if re.search('^FQHOSTNAME="', l): l = 'FQHOSTNAME="%s"\n' % nhostname rc.write(l) rc.close() os.rename('/etc/rc.config', '/etc/rc.config.old') os.rename('/etc/rc.config.new', '/etc/rc.config') log.l.LogIt('CTL020', 'I', 'update /etc/rc.config', ()) except: log.l.LogIt('CTL021', 'E', 'cannot update /etc/rc.config', ()) self.senddata = 'cannot update /etc/rc.config' return #------------- # edit /etc/HOSTNAME try: f = open('/etc/HOSTNAME', 'w') f.write('%s\n' % nhostname) f.close() except: pass #------------- self.senddata = 'next start: %s' % (args[1]) #-------------------- elif args[0] == 'version': self.senddata = ver.getVersion() #-------------------- else: self.senddata = 'command: '+args[0]+': not implemented'
base = os.path.dirname(bin) sys.path.append(os.path.normpath(base + '/../cfg')) sys.path.append(os.path.normpath(base + '/../share')) import log, msgpkt, sock, ver import basecfg #--------------------------------------- progname = 'aprscmd' lversion = '1.00' #ver.showVersion(progname, lversion, rcsid) ver.setVersion(lversion) log.l = log.PathFmtLogFile(progname, 'n', -1, 1024*1024, 30, -1) log.l.LogIt('SCMD01', 'I', 'start %s', (ver.getVersion())) log.l.LogIt('SCMD02', 'I', '%s', (str(sys.argv))) #------------------------------------------------- # handle signals def sig_end(signum, frame): log.l.LogIt('SCMD03', 'I', 'signal %s termination', (signum)) sys.exit(1) signal.signal(signal.SIGINT, sig_end) signal.signal(signal.SIGTERM, sig_end) #------------------------------------------------- def usage(exit_val): print """ usage: aprscmd {Adressing} {Command}