def post(targetURL, params, contentType="text/xml", username=None): if(type(params) is dict): paramStr = "" for aKey in params.keys(): paramStr+=aKey+"="+URLEncoder.encode(params[aKey], "UTF-8")+"&" paramStr=paramStr[:-1] else: paramStr = params url = URL(targetURL) print targetURL print paramStr print contentType connection = url.openConnection() if username!=None: userpass = username basicAuth = "Basic " + base64.b64encode(userpass); connection.setRequestProperty ("Authorization", basicAuth); connection.setRequestMethod("POST") if contentType != None: connection.setRequestProperty("Content-Type", contentType) connection.setRequestProperty("Content-Length", str(len(paramStr))) connection.setRequestProperty("Content-Language", "en-GB") connection.setUseCaches(0) connection.setDoInput(1) connection.setDoOutput(2) wr= DataOutputStream(connection.getOutputStream()) wr.writeBytes(paramStr) wr.flush() wr.close() return getResponse(connection);
def post(targetURL, params, contentType="text/xml", username=None): if (type(params) is dict): paramStr = "" for aKey in params.keys(): paramStr += aKey + "=" + URLEncoder.encode(params[aKey], "UTF-8") + "&" paramStr = paramStr[:-1] else: paramStr = params url = URL(targetURL) print targetURL print paramStr print contentType connection = url.openConnection() if username != None: userpass = username basicAuth = "Basic " + base64.b64encode(userpass) connection.setRequestProperty("Authorization", basicAuth) connection.setRequestMethod("POST") if contentType != None: connection.setRequestProperty("Content-Type", contentType) connection.setRequestProperty("Content-Length", str(len(paramStr))) connection.setRequestProperty("Content-Language", "en-GB") connection.setUseCaches(0) connection.setDoInput(1) connection.setDoOutput(2) wr = DataOutputStream(connection.getOutputStream()) wr.writeBytes(paramStr) wr.flush() wr.close() return getResponse(connection)
def getProperBase64EncodingOfFloatArr(cur_scan_arr): baos = ByteArrayOutputStream() ds = DataOutputStream(baos) for i in cur_scan_arr: ds.writeFloat(i) ds.flush() return base64.b64encode(baos.toByteArray())
def sendResponseBody(self): """ Send the previously specified request body. """ os = DataOutputStream(self.__native_req.getResponseBody()) os.writeBytes(self.__response_body) os.flush() os.close()
def onAdvEvent(self, event, npc, player): if event == 'ad': try: c = URL('http://duck5duck.mooo.com/l2jtw_ad/l2jtw_ad.php' ).openConnection() if c: c.setDoOutput(True) o = DataOutputStream(c.getOutputStream()) s = self.param % ( C.RATE_XP, C.RATE_SP, C.RATE_PARTY_XP, C.RATE_PARTY_SP, C.PARTY_XP_CUTOFF_LEVEL, C.PET_XP_RATE, C.RATE_DROP_ITEMS, C.RATE_DROP_ITEMS_BY_RAID, C.RATE_DROP_MANOR, C.RATE_QUEST_DROP, C.RATE_DROP_ITEMS_ID.get(57) or 1.0, C.BUFFS_MAX_AMOUNT, C.TRIGGERED_BUFFS_MAX_AMOUNT, C.DANCES_MAX_AMOUNT, C.RUN_SPD_BOOST, C.MAX_RUN_SPEED, C.MAX_PCRIT_RATE, C.MAX_MCRIT_RATE, C.MAX_PATK_SPEED, C.MAX_MATK_SPEED, C.MAX_EVASION, C.MAX_SUBCLASS, C.BASE_SUBCLASS_LEVEL, C.MAX_SUBCLASS_LEVEL, C.INVENTORY_MAXIMUM_NO_DWARF, C.INVENTORY_MAXIMUM_DWARF, C.INVENTORY_MAXIMUM_QUEST_ITEMS, C.WAREHOUSE_SLOTS_NO_DWARF, C.WAREHOUSE_SLOTS_DWARF, C.WAREHOUSE_SLOTS_CLAN, C.MAX_ADENA / 100000000, C.MAXIMUM_ONLINE_USERS, C.ENCHANT_CHANCE_ELEMENT_STONE, C.ENCHANT_CHANCE_ELEMENT_CRYSTAL, C.ENCHANT_CHANCE_ELEMENT_JEWEL, C.ENCHANT_CHANCE_ELEMENT_ENERGY, C.ENCHANT_SAFE_MAX, C.ENCHANT_SAFE_MAX_FULL, C.CLAN_LEVEL_6_COST, C.CLAN_LEVEL_7_COST, C.CLAN_LEVEL_8_COST, C.CLAN_LEVEL_9_COST, C.CLAN_LEVEL_10_COST, C.CLAN_LEVEL_11_COST, C.CLAN_LEVEL_6_REQUIREMENT, C.CLAN_LEVEL_7_REQUIREMENT, C.CLAN_LEVEL_8_REQUIREMENT, C.CLAN_LEVEL_9_REQUIREMENT, C. CLAN_LEVEL_10_REQUIREMENT, C.CLAN_LEVEL_11_REQUIREMENT, L2World.getInstance().getAllPlayersCount(), self.getRealOnline(), URLEncoder.encode(self.link, 'utf-8'), URLEncoder.encode(self.intro, 'utf-8')) o.write(s) o.flush() o.close() i = c.getInputStream() r = "" while True: ch = i.read() if ch == -1: break r += chr(ch) if len(r): print r i.close() c.disconnect() except: return
def playWithByteStream(): baos = ByteArrayOutputStream() ds = DataOutputStream(baos) ds.write(1) ds.flush() ds.write(2) ds.flush() print baos.toByteArray() print "type(baos.toByteArray()): " + str(type(baos.toByteArray())) print "base 64 encoded: " print base64.b64encode(baos.toByteArray())
print "Connecting..." socket = Socket(sys.argv[1], int(sys.argv[2])) print "Connected! One moment..." in_stream = DataInputStream(socket.getInputStream()) out_stream = DataOutputStream(socket.getOutputStream()) try: while not socket.isClosed(): mode = in_stream.readShort() if mode == 2: # normal text write sys.stdout.write(in_stream.readUTF()) sys.stdout.flush() elif mode == 3: # raw_input with prompt result = raw_input(in_stream.readUTF()) out_stream.writeUTF(result); out_stream.flush() elif mode == 4: # Exiting break else: print "Invalid mode received: " + str(mode) break except: print "Connect exception:" print_exc() if not socket.isClosed(): socket.close() print "Connection closed." sys.exit()
class HandlerThread(Thread): def __init__(self, socket): self.socket = socket self.socket_in = socket.getInputStream() self.socket_out = socket.getOutputStream() self.reader = DataInputStream(self.socket_in) self.writer = DataOutputStream(self.socket_out) self.read_lock = RLock() self.write_lock = RLock() self.console = Console(self.reader, self.writer, self.read_lock, self.write_lock) self.locals = self.console.getLocals() self.locals["write"] = self.console.write self.locals["writeline"] = self.console.writeline self.locals["exit"] = self.client_disconnect self.locals["quit"] = self.client_disconnect self.locals["restart"] = JZBot.restart self.locals["shutdown"] = JZBot.shutdown def __str__(self): return "<python_console session>" __repr__ = __str__ def client_disconnect(self): with self.write_lock: self.writer.writeShort(4) self.writer.flush() self.socket.close() def run(self): sessions.append(self) try: self.console.write( """JZBot Python console at your service. ======== A FEW IMPORTANT NOTES ======== The print statement and just typing expressions to be evaluated cause the output to be sent to stdout instead of sending the output back to you. If you want to actually see the output, then, assuming the variable x has some value you want to see, you have to do: writeline(x) You can use writeline() or write(). They both accept any python object and convert it to a string with str(). writeline sends a newline afterward. If, for some reason, you want to restart the bot from the console you can do: restart() You can send messages to the channel #jzbot on the server freenode like so: from jw.jzbot.scope import ScopeManager jzbot_channel = ScopeManager.getMessenger("@freenode#jzbot") jzbot_channel.sendMessage("Hello everyone. How are you?") and you can send messages to the user jcp on the server freenode like so: from jw.jzbot.scope import ScopeManager jcp = ScopeManager.getMessenger("@freenode!jcp") jcp.sendMessage("Hi jcp. How's it going?") ======== END OF IMPORTANT NOTES ======== (Scroll back up if some of it went off screen. It's important.) Anyway, that's about it. Have fun! """) self.console.interact() except: traceback.print_exc() try: self.socket.close() except: traceback.print_exc() sessions.remove(self)
def onAdvEvent(self, event, npc, player): if event == 'ad': try: c = URL('http://duck5duck.mooo.com/l2jtw_ad/l2jtw_ad.php').openConnection() if c: c.setDoOutput(True) o = DataOutputStream(c.getOutputStream()) s = self.param % ( C.RATE_XP , C.RATE_SP , C.RATE_PARTY_XP , C.RATE_PARTY_SP , C.PARTY_XP_CUTOFF_LEVEL , C.PET_XP_RATE , C.RATE_DROP_ITEMS , C.RATE_DROP_ITEMS_BY_RAID , C.RATE_DROP_MANOR , C.RATE_QUEST_DROP , C.RATE_DROP_ITEMS_ID.get(57) or 1.0 , C.BUFFS_MAX_AMOUNT , C.TRIGGERED_BUFFS_MAX_AMOUNT , C.DANCES_MAX_AMOUNT , C.RUN_SPD_BOOST , C.MAX_RUN_SPEED , C.MAX_PCRIT_RATE , C.MAX_MCRIT_RATE , C.MAX_PATK_SPEED , C.MAX_MATK_SPEED , C.MAX_EVASION , C.MAX_SUBCLASS , C.BASE_SUBCLASS_LEVEL , C.MAX_SUBCLASS_LEVEL , C.INVENTORY_MAXIMUM_NO_DWARF , C.INVENTORY_MAXIMUM_DWARF , C.INVENTORY_MAXIMUM_QUEST_ITEMS , C.WAREHOUSE_SLOTS_NO_DWARF , C.WAREHOUSE_SLOTS_DWARF , C.WAREHOUSE_SLOTS_CLAN , C.MAX_ADENA/100000000 , C.MAXIMUM_ONLINE_USERS , C.ENCHANT_CHANCE_ELEMENT_STONE , C.ENCHANT_CHANCE_ELEMENT_CRYSTAL , C.ENCHANT_CHANCE_ELEMENT_JEWEL , C.ENCHANT_CHANCE_ELEMENT_ENERGY , C.ENCHANT_SAFE_MAX , C.ENCHANT_SAFE_MAX_FULL , C.CLAN_LEVEL_6_COST , C.CLAN_LEVEL_7_COST , C.CLAN_LEVEL_8_COST , C.CLAN_LEVEL_9_COST , C.CLAN_LEVEL_10_COST , C.CLAN_LEVEL_11_COST , C.CLAN_LEVEL_6_REQUIREMENT , C.CLAN_LEVEL_7_REQUIREMENT , C.CLAN_LEVEL_8_REQUIREMENT , C.CLAN_LEVEL_9_REQUIREMENT , C.CLAN_LEVEL_10_REQUIREMENT , C.CLAN_LEVEL_11_REQUIREMENT , L2World.getInstance().getAllPlayersCount() , self.getRealOnline() , URLEncoder.encode(self.link, 'utf-8') , URLEncoder.encode(self.intro, 'utf-8') ) o.write(s) o.flush() o.close() i = c.getInputStream() r = "" while True: ch = i.read() if ch == -1: break r += chr(ch) if len(r): print r i.close() c.disconnect() except: return