Example #1
0
        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')
Example #2
0
        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')
Example #3
0
        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()
Example #4
0
        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')
Example #5
0
        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
Example #6
0
        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')
Example #7
0
        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
Example #8
0
        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