Simple XML-RPC Server with gEvent

2010-12-26 22:12:20 UTC by maris in python, Linux, Skripti,

#!/usr/bin/python from gevent import monkey monkey.patch_all() import gevent import time import xmlrpclib from SimpleXMLRPCServer import SimpleXMLRPCServer import SocketServer from SimpleXMLRPCServer import SimpleXMLRPCServer,SimpleXMLRPCRequestHandler class ThreadedXMLRPCServer(SocketServer.ThreadingMixIn,SimpleXMLRPCServer): pass import urllib2 class XMLRPCHandler: def is_even(n): return n%2 == 0 def req(url): return urllib2.urlopen(url).read() server = ThreadedXMLRPCServer(("localhost", 7080)) print "Listening on port 7080..." server.register_instance(XMLRPCHandler()) server.serve_forever()

(0 komentāri)

Atjaunināts files.inbox.lv downloader

2009-12-09 09:05:09 UTC by maris in python, Internets, Skripti,

Atjaunināju files.inbox.lv downloder, tagad ari uploader skriptu.
Galvenais jauninājums ir upload iespējam, kā arī iespēja uplodēt direktorijas saturu un pat rekursīvi uploadēt direktorijas un apakšdirektoriju saturus. Direktoriju struktūras koks nesagabājas.
Paņemt te

(2 komentāri)

Asinhrons serveris 5 minūtēs ar Twisted

2009-12-08 21:25:12 UTC by maris in python, Twisted,

Vienkārša asinhrona server piemērs ar defered pielietojumu. Dotais piemērs nodarbojas ar to ka saņem stringu un atgriež stringa hash summu, pēc EOF pātrauc savienojumu. Lai neaizmirstu :) #!/usr/bin/env python from twisted.protocols.basic import LineReceiver from twisted.internet import reactor, protocol, defer import re class SimpleServer(LineReceiver): defer.setDebugging(True) # Twisted Method, is called when connection has been made def connectionMade(self): self.sendLine("Hi %s"%(self.transport.getPeer()[1])) # Twisted Method, is called when connection has been lost def connectionLost(self, data): print "Calling Connection lost" # Twisted Method, is called when line is received def lineReceived(self, line): # If line is EOF, disconnecting if re.search('^EOF$',line): # Twisted method to disconnect self.transport.loseConnection() else: # Creating defered object defered = self.DeferedFunction('%s'%(line)) # Adding Callbec to be run, when result is ready defered.addCallback(self.ReturningFunction) # Function which is doing defered stuff def DeferedFunction(self, data): # initng defered d = defer.Deferred() import hashlib digest = hashlib.sha224(data).hexdigest() # Sending data to callback d.callback('String hash: %s'%(digest)) # returning deferd object return d # Callback function def ReturningFunction(self, data): # Returning result to client self.sendLine("%s"%(data)) def main(): factory = protocol.ServerFactory() factory.protocol = SimpleServer reactor.listenTCP(1100,factory) reactor.run() if __name__ == '__main__': main()

(0 komentāri)

files.inbox.lv downloader

2009-06-05 15:09:46 UTC by maris in Linux, python, Skripti, Apple, Software,

files.inbox.lv ir visai jauns failu glabāšanas serviss, kam ir diezgan ērta upload forma, kas ļauj augšup ielādēt vairākus failus vienlaicīgi, bet diemžēl nav iespējas lejupielādēt vairākus failus vienlaicīgi, tādēļ uzrakstīju nelielu Python skriptu, kas šo trūkumu atrisina. Inbox Files Downloader ir komandrindas (cli) Python skripts, kas lejupielādē failus no files.inbox.lv servisa, saglabājot tos uz lokālā diska. Skripts ir spējīgs lejupielādēt individuālus failus, vaī pat veselu direktoriju saturu. Spēj lejupielādēt: 1. Privātos failus un direktorijas saturus, ar autorizāciju 2. Publiskos failus - bez autorizācijas Lai lejupielādēt privāto failu vai direktorijas saturu: ./inbox-files-downloader.py -s 'http://files.inbox.lv/files/download/?id=9999' -d Downloads/ pēc kā tiks paprasīti autorizācijas dati. vai publisko: ./inbox-files-downloader.py -s 'http://files.inbox.lv/ticket/2dcb12a3282ce55ac122c118ac4c567acae474c5/817-2271.pdf' -d Downl/ autorizācijas dati netiks prasīti. Komentāri un ieteikumi ir laipni gaidīti :) Nepieciešama UNIX tipa OS un python > 2.4, pie lielas vēlēšanās var modificēt arī priekš Win. paņemt var te: py skripts: inbox-files-downloader Win32 exe: inbox-files-downloader-r20

(0 komentāri)

Netconsole2Mail

2008-12-05 10:28:18 UTC by maris in Linux, python, Skripti,

dmesg ir visai noderīga lieta kodola ziņu pārlūkošanai. Kodols signalizē, ja ir kādas problēmas ar aparatūru vai programmaturu (piem. failu sistēmu), tas viss tiek atspoguļots iekš dmesg. Un cik bieži sanāk apskatities dmesg? Droši vien tikai tad, kad tiek atjaunināta sistēma, vai arī rodas kādas problēmas. Linux Kernelī ir lieta, kas saucas "netconsole". Netconsole dod iespēju sūtīt kerneļa ziņas uz kādu citu centrālu serveri, tas var būt syslog serveri, vai arī vienkāršs netcat, bet gan netcat gan syslog ir trūkumi netconsole ziņu saņemšanā un kādu darbību izpildē. Tādēļ nolēmu uzrakstīt nelielu dēmonu, kas tad veiktu netconsole server funkcijas. Tā darbība ir visai vienkārša tas saņem ziņas uz 6666/udp, liek buferī, un pēc kāda konfigurēta intervāla buffera saturu sūta administratoram. Paņemt var te: http://forums.gentoo.lv/index.php?topic=36.0

(0 komentāri)