def sendMessage(self, fromAddress, toAddress, subject, message, encodingType=2): assert encodingType == 2, 'other values not supported jet' status, addressVersionNumber, streamNumber, toRipe = bitmessagemain.decodeAddress(toAddress) if status != 'success': with bitmessagemain.shared.printLock: print 'ToAddress Error: %s , %s'%(toAddress,status) return (toAddress,status) status, addressVersionNumber, streamNumber, fromRipe = bitmessagemain.decodeAddress(fromAddress) if status != 'success': with bitmessagemain.shared.printLock: print 'fromAddress Error: %s , %s'%(fromAddress,status) return (fromAddress,status) toAddress = bitmessagemain.addBMIfNotPresent(toAddress) fromAddress = bitmessagemain.addBMIfNotPresent(fromAddress) try: fromAddressEnabled = bitmessagemain.shared.config.getboolean(fromAddress, 'enabled') except: return (fromAddress,'fromAddressNotPresentError') if not fromAddressEnabled: return (fromAddress,'fromAddressDisabledError') ackdata = bitmessagemain.OpenSSL.rand(32) t = ('', toAddress, toRipe, fromAddress, subject, message, ackdata, int( time.time()), 'msgqueued', 1, 1, 'sent', 2) bitmessagemain.helper_sent.insert(t) toLabel = '' t = (toAddress,) bitmessagemain.shared.sqlLock.acquire() bitmessagemain.shared.sqlSubmitQueue.put( '''select label from addressbook where address=?''') bitmessagemain.shared.sqlSubmitQueue.put(t) queryreturn = bitmessagemain.shared.sqlReturnQueue.get() bitmessagemain.shared.sqlLock.release() if queryreturn != []: for row in queryreturn: toLabel, = row bitmessagemain.shared.UISignalQueue.put(('displayNewSentMessage', ( toAddress, toLabel, fromAddress, subject, message, ackdata))) bitmessagemain.shared.workerQueue.put(('sendmessage', toAddress)) return ackdata.encode('hex')
def sendBroadcast(self, fromAddress, subject, message): '''Send a Broadcast to a given Address Usage: api.sendBroadcast(BmAddress, Subject, Message)''' #Hardcoded Encoding Type, no othe supported jet encodingType = 2 status, addressVersionNumber, streamNumber, toRipe = bitmessagemain.decodeAddress( fromAddress) fromAddress = bitmessagemain.addBMIfNotPresent(fromAddress) try: fromAddressEnabled = bitmessagemain.shared.config.getboolean( fromAddress, 'enabled') except: return (fromAddress, 'fromAddressNotPresentError') if not fromAddressEnabled: return (fromAddress, 'fromAddressDisabledError') ackdata = bitmessagemain.OpenSSL.rand(32) toAddress = '[Broadcast subscribers]' ripe = '' t = ('', toAddress, ripe, fromAddress, subject, message, ackdata, int(time.time()), 'broadcastqueued', 1, 1, 'sent', 2) bitmessagemain.helper_sent.insert(t) toLabel = '[Broadcast subscribers]' bitmessagemain.shared.workerQueue.put(('sendbroadcast', '')) return ackdata.encode('hex')
def addSubscription(self,address,label = ''): unicode(label, 'utf-8') address = bitmessagemain.addBMIfNotPresent(address) status, addressVersionNumber, streamNumber, toRipe = bitmessagemain.decodeAddress(address) assert status == 'success', 'Address Error: %s , %s'%(address,status) # First we must check to see if the address is already in the # subscriptions list. bitmessagemain.shared.sqlLock.acquire() t = (address,) bitmessagemain.shared.sqlSubmitQueue.put('''select * from subscriptions where address=?''') bitmessagemain.shared.sqlSubmitQueue.put(t) queryreturn = bitmessagemain.shared.sqlReturnQueue.get() bitmessagemain.shared.sqlLock.release() assert queryreturn == [],'AlreadySubscribedError' t = (label, address, True) bitmessagemain.shared.sqlLock.acquire() bitmessagemain.shared.sqlSubmitQueue.put('''INSERT INTO subscriptions VALUES (?,?,?)''') bitmessagemain.shared.sqlSubmitQueue.put(t) queryreturn = bitmessagemain.shared.sqlReturnQueue.get() bitmessagemain.shared.sqlSubmitQueue.put('commit') bitmessagemain.shared.sqlLock.release() bitmessagemain.shared.reloadBroadcastSendersForWhichImWatching()
def sendBroadcast(self,fromAddress,subject,message,encodingType=2): assert encodingType == 2, 'Only 2 is supported jet' status, addressVersionNumber, streamNumber, toRipe = bitmessagemain.decodeAddress(fromAddress) fromAddress = bitmessagemain.addBMIfNotPresent(fromAddress) try: fromAddressEnabled = bitmessagemain.shared.config.getboolean(fromAddress, 'enabled') except: return (fromAddress,'fromAddressNotPresentError') if not fromAddressEnabled: return (fromAddress,'fromAddressDisabledError') ackdata = bitmessagemain.OpenSSL.rand(32) toAddress = '[Broadcast subscribers]' ripe = '' t = ('', toAddress, ripe, fromAddress, subject, message, ackdata, int( time.time()), 'broadcastqueued', 1, 1, 'sent', 2) bitmessagemain.helper_sent.insert(t) toLabel = '[Broadcast subscribers]' bitmessagemain.shared.workerQueue.put(('sendbroadcast', '')) return ackdata.encode('hex')
def deleteSubscription(self, address): '''Delete a Subscription Usage: api.deleteSubscription(bmaddress)''' address = bitmessagemain.addBMIfNotPresent(address) bitmessagemain.shared.sqlExecute( '''DELETE FROM subscriptions WHERE address=?''', address) bitmessagemain.shared.reloadBroadcastSendersForWhichImWatching() return True
def sendMessage(self, fromAddress, toAddress, subject, message): '''Send a Message to a given Address or Channel Usage: api.sendBroadcast(OwnAddress, TargetAddress, Subject, Message)''' #Hardcoded Encoding Type, no othe supported jet encodingType = 2 status, addressVersionNumber, streamNumber, toRipe = bitmessagemain.decodeAddress( toAddress) if status != 'success': with bitmessagemain.shared.printLock: print 'ToAddress Error: %s , %s' % (toAddress, status) return (toAddress, status) status, addressVersionNumber, streamNumber, fromRipe = bitmessagemain.decodeAddress( fromAddress) if status != 'success': with bitmessagemain.shared.printLock: print 'fromAddress Error: %s , %s' % (fromAddress, status) return (fromAddress, status) toAddress = bitmessagemain.addBMIfNotPresent(toAddress) fromAddress = bitmessagemain.addBMIfNotPresent(fromAddress) try: fromAddressEnabled = bitmessagemain.shared.config.getboolean( fromAddress, 'enabled') except: return (fromAddress, 'fromAddressNotPresentError') if not fromAddressEnabled: return (fromAddress, 'fromAddressDisabledError') ackdata = bitmessagemain.OpenSSL.rand(32) t = ('', toAddress, toRipe, fromAddress, subject, message, ackdata, int(time.time()), 'msgqueued', 1, 1, 'sent', 2) bitmessagemain.helper_sent.insert(t) toLabel = '' queryreturn = bitmessagemain.shared.sqlQuery( '''select label from addressbook where address=?''', toAddress) if queryreturn != []: for row in queryreturn: toLabel, = row bitmessagemain.shared.UISignalQueue.put( ('displayNewSentMessage', (toAddress, toLabel, fromAddress, subject, message, ackdata))) bitmessagemain.shared.workerQueue.put(('sendmessage', toAddress)) return ackdata.encode('hex')
def deleteAddress(self, address): status, addressVersionNumber, streamNumber, toRipe = self._verifyAddress( address) address = bitmessagemain.addBMIfNotPresent(address) if not bitmessagemain.shared.config.has_section(address): raise APIError( 'Could not find this address in your keys.dat file.') bitmessagemain.shared.config.remove_section(address) with open(bitmessagemain.shared.appdata + 'keys.dat', 'wb') as configfile: bitmessagemain.shared.config.write(configfile) bitmessagemain.shared.reloadMyAddressHashes() return True
def addSubscription(self, label, address): '''Add a Subscription Usage: api.addSubscription(label,bmaddressl)''' logger.info('Label: %s Address: %s' % (label, address)) unicode(label, 'utf-8') address = bitmessagemain.addBMIfNotPresent(address) status, addressVersionNumber, streamNumber, toRipe = bitmessagemain.decodeAddress( address) if status != 'success': raise APIError('Address Error: %s , %s' % (address, status)) # First we must check to see if the address is already in the # subscriptions list. queryreturn = bitmessagemain.shared.sqlQuery( '''select * from subscriptions where address=?''', address) if queryreturn != []: raise APIError('AlreadySubscribedError') bitmessagemain.shared.sqlExecute( '''INSERT INTO subscriptions VALUES (?,?,?)''', label, address, True) bitmessagemain.shared.reloadBroadcastSendersForWhichImWatching() return True