moving mail over to blueprint system
This commit is contained in:
		
							parent
							
								
									c89bf5b430
								
							
						
					
					
						commit
						c45c016123
					
				
					 8 changed files with 81 additions and 23 deletions
				
			
		
							
								
								
									
										3
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -2,9 +2,6 @@ PREFIX = /usr/local | ||||||
| 
 | 
 | ||||||
| .DEFAULT_GOAL := setup | .DEFAULT_GOAL := setup | ||||||
| 
 | 
 | ||||||
| SHELL  := env ONIONR_HOME=$(ONIONR_HOME) $(SHELL) |  | ||||||
| ONIONR_HOME ?= "data" |  | ||||||
| 
 |  | ||||||
| setup: | setup: | ||||||
| 	sudo pip3 install -r requirements.txt | 	sudo pip3 install -r requirements.txt | ||||||
| 	-@cd onionr/static-data/ui/; ./compile.py | 	-@cd onionr/static-data/ui/; ./compile.py | ||||||
|  |  | ||||||
|  | @ -251,9 +251,6 @@ class API: | ||||||
|             This initilization defines all of the API entry points and handlers for the endpoints and errors |             This initilization defines all of the API entry points and handlers for the endpoints and errors | ||||||
|             This also saves the used host (random localhost IP address) to the data folder in host.txt |             This also saves the used host (random localhost IP address) to the data folder in host.txt | ||||||
|         ''' |         ''' | ||||||
|         # assert isinstance(onionrInst, onionr.Onionr) |  | ||||||
|         # configure logger and stuff |  | ||||||
|         #onionr.Onionr.setupConfig('data/', self = self) |  | ||||||
| 
 | 
 | ||||||
|         self.debug = debug |         self.debug = debug | ||||||
|         self._core = onionrInst.onionrCore |         self._core = onionrInst.onionrCore | ||||||
|  | @ -524,7 +521,6 @@ class API: | ||||||
|             responseTimeout = 20 |             responseTimeout = 20 | ||||||
|             startTime = self._core._utils.getEpoch() |             startTime = self._core._utils.getEpoch() | ||||||
|             postData = {} |             postData = {} | ||||||
|             print('spth', subpath) |  | ||||||
|             if request.method == 'POST': |             if request.method == 'POST': | ||||||
|                 postData = request.form['postData'] |                 postData = request.form['postData'] | ||||||
|             if len(subpath) > 1: |             if len(subpath) > 1: | ||||||
|  |  | ||||||
|  | @ -65,7 +65,7 @@ class Core: | ||||||
|             self.dataNonceFile = self.dataDir + 'block-nonces.dat' |             self.dataNonceFile = self.dataDir + 'block-nonces.dat' | ||||||
|             self.dbCreate = dbcreator.DBCreator(self) |             self.dbCreate = dbcreator.DBCreator(self) | ||||||
|             self.forwardKeysFile = self.dataDir + 'forward-keys.db' |             self.forwardKeysFile = self.dataDir + 'forward-keys.db' | ||||||
|             #self.keyStore = simplekv.DeadSimpleKV(self.dataDir + 'cachedstorage.dat', refresh_seconds=5) |             self.keyStore = simplekv.DeadSimpleKV(self.dataDir + 'cachedstorage.dat', refresh_seconds=5) | ||||||
| 
 | 
 | ||||||
|             # Socket data, defined here because of multithreading constraints with gevent |             # Socket data, defined here because of multithreading constraints with gevent | ||||||
|             self.killSockets = False |             self.killSockets = False | ||||||
|  |  | ||||||
|  | @ -1,7 +1,26 @@ | ||||||
| from flask import request | ''' | ||||||
|  |     Onionr - P2P Anonymous Storage Network | ||||||
|  | 
 | ||||||
|  |     This file registers plugin's flask blueprints for the client http server | ||||||
|  | ''' | ||||||
|  | ''' | ||||||
|  |     This program is free software: you can redistribute it and/or modify | ||||||
|  |     it under the terms of the GNU General Public License as published by | ||||||
|  |     the Free Software Foundation, either version 3 of the License, or | ||||||
|  |     (at your option) any later version. | ||||||
|  | 
 | ||||||
|  |     This program is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |     GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  |     You should have received a copy of the GNU General Public License | ||||||
|  |     along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | ''' | ||||||
| import onionrplugins | import onionrplugins | ||||||
| 
 | 
 | ||||||
| def load_plugin_blueprints(flaskapp): | def load_plugin_blueprints(flaskapp): | ||||||
|  |     '''Iterate enabled plugins and load any http endpoints they have''' | ||||||
|     for plugin in onionrplugins.get_enabled_plugins(): |     for plugin in onionrplugins.get_enabled_plugins(): | ||||||
|         plugin = onionrplugins.get_plugin(plugin) |         plugin = onionrplugins.get_plugin(plugin) | ||||||
|         try: |         try: | ||||||
|  |  | ||||||
							
								
								
									
										13
									
								
								onionr/static-data/default-plugins/pms/loadinbox.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								onionr/static-data/default-plugins/pms/loadinbox.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | import onionrblockapi | ||||||
|  | def load_inbox(myCore): | ||||||
|  |     inbox_list = [] | ||||||
|  |     deleted = myCore.keyStore.get('deleted_mail') | ||||||
|  |     if deleted is None: | ||||||
|  |         deleted = [] | ||||||
|  | 
 | ||||||
|  |     for blockHash in myCore.getBlocksByType('pm'): | ||||||
|  |         block = onionrblockapi.Block(blockHash, core=myCore) | ||||||
|  |         block.decrypt() | ||||||
|  |         if block.decrypted and blockHash not in deleted: | ||||||
|  |             inbox_list.append(blockHash) | ||||||
|  |     return inbox_list | ||||||
							
								
								
									
										43
									
								
								onionr/static-data/default-plugins/pms/mailapi.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								onionr/static-data/default-plugins/pms/mailapi.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | ''' | ||||||
|  |     Onionr - P2P Anonymous Storage Network | ||||||
|  | 
 | ||||||
|  |     HTTP endpoints for mail plugin. | ||||||
|  | ''' | ||||||
|  | ''' | ||||||
|  |     This program is free software: you can redistribute it and/or modify | ||||||
|  |     it under the terms of the GNU General Public License as published by | ||||||
|  |     the Free Software Foundation, either version 3 of the License, or | ||||||
|  |     (at your option) any later version. | ||||||
|  | 
 | ||||||
|  |     This program is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |     GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  |     You should have received a copy of the GNU General Public License | ||||||
|  |     along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | ''' | ||||||
|  | import sys, os | ||||||
|  | from flask import Response, request, redirect, Blueprint | ||||||
|  | import core | ||||||
|  | sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) | ||||||
|  | import loadinbox | ||||||
|  | 
 | ||||||
|  | flask_blueprint = Blueprint('mail', __name__) | ||||||
|  | c = core.Core() | ||||||
|  | kv = c.keyStore | ||||||
|  | 
 | ||||||
|  | @flask_blueprint.route('/mail/deletemsg/<block>', methods=['POST']) | ||||||
|  | def mail_delete(block): | ||||||
|  |     assert c._utils.validateHash(block) | ||||||
|  |     existing = kv.get('deleted_mail') | ||||||
|  |     if existing is None: | ||||||
|  |         existing = [] | ||||||
|  |     if block not in existing: | ||||||
|  |         existing.append(block) | ||||||
|  |     kv.put('deleted_mail', existing) | ||||||
|  |     return 'success' | ||||||
|  | 
 | ||||||
|  | @flask_blueprint.route('/mail/getinbox') | ||||||
|  | def list_inbox(): | ||||||
|  |     return ','.join(loadinbox.load_inbox(c)) | ||||||
|  | @ -23,21 +23,16 @@ import logger, config, threading, time, readline, datetime | ||||||
| from onionrblockapi import Block | from onionrblockapi import Block | ||||||
| import onionrexceptions | import onionrexceptions | ||||||
| from onionrusers import onionrusers | from onionrusers import onionrusers | ||||||
| from flask import Response, request, redirect, Blueprint |  | ||||||
| import locale, sys, os, json | import locale, sys, os, json | ||||||
| 
 | 
 | ||||||
| locale.setlocale(locale.LC_ALL, '') | locale.setlocale(locale.LC_ALL, '') | ||||||
| 
 | 
 | ||||||
| plugin_name = 'pms' | plugin_name = 'pms' | ||||||
| PLUGIN_VERSION = '0.0.1' | PLUGIN_VERSION = '0.0.1' | ||||||
| flask_blueprint = Blueprint('mail', __name__) |  | ||||||
| 
 | 
 | ||||||
| sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) | sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) | ||||||
| import sentboxdb # import after path insert | import sentboxdb, mailapi, loadinbox # import after path insert | ||||||
| 
 | flask_blueprint = mailapi.flask_blueprint | ||||||
| @flask_blueprint.route('/mailhello') |  | ||||||
| def mailhello(): |  | ||||||
|     return "hello world from mail" |  | ||||||
| 
 | 
 | ||||||
| def draw_border(text): | def draw_border(text): | ||||||
|     #https://stackoverflow.com/a/20757491 |     #https://stackoverflow.com/a/20757491 | ||||||
|  | @ -83,7 +78,7 @@ class OnionrMail: | ||||||
|         displayList = [] |         displayList = [] | ||||||
|         subject = '' |         subject = '' | ||||||
| 
 | 
 | ||||||
|         # this could use a lot of memory if someone has recieved a lot of messages |         # this could use a lot of memory if someone has received a lot of messages | ||||||
|         for blockHash in self.myCore.getBlocksByType('pm'): |         for blockHash in self.myCore.getBlocksByType('pm'): | ||||||
|             pmBlocks[blockHash] = Block(blockHash, core=self.myCore) |             pmBlocks[blockHash] = Block(blockHash, core=self.myCore) | ||||||
|             pmBlocks[blockHash].decrypt() |             pmBlocks[blockHash].decrypt() | ||||||
|  | @ -327,10 +322,6 @@ def on_pluginrequest(api, data=None): | ||||||
|         cmd = path.split('/')[1] |         cmd = path.split('/')[1] | ||||||
|         if cmd == 'sentbox': |         if cmd == 'sentbox': | ||||||
|             resp = OnionrMail(api).get_sent_list(display=False) |             resp = OnionrMail(api).get_sent_list(display=False) | ||||||
|         elif cmd == 'deletemsg': |  | ||||||
|             print('path', data['path']) |  | ||||||
|             #add_deleted(keyStore, data['path'].split('/')[2]) |  | ||||||
|             resp = 'success' |  | ||||||
|     if resp != '': |     if resp != '': | ||||||
|         api.get_onionr().clientAPIInst.pluginResponses[data['pluginResponse']] = resp |         api.get_onionr().clientAPIInst.pluginResponses[data['pluginResponse']] = resp | ||||||
| 
 | 
 | ||||||
|  | @ -345,5 +336,4 @@ def on_init(api, data = None): | ||||||
|     mail = OnionrMail(pluginapi) |     mail = OnionrMail(pluginapi) | ||||||
|     api.commands.register(['mail'], mail.menu) |     api.commands.register(['mail'], mail.menu) | ||||||
|     api.commands.register_help('mail', 'Interact with OnionrMail') |     api.commands.register_help('mail', 'Interact with OnionrMail') | ||||||
|     print("YEET2") |  | ||||||
|     return |     return | ||||||
|  |  | ||||||
|  | @ -203,7 +203,7 @@ function showSentboxWindow(to, content){ | ||||||
|     overlay('sentboxDisplay') |     overlay('sentboxDisplay') | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fetch('/getblocksbytype/pm', { | fetch('/mail/getinbox', { | ||||||
|     headers: { |     headers: { | ||||||
|       "token": webpass |       "token": webpass | ||||||
|     }}) |     }}) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue