95 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
| /*
 | |
|     Onionr - Private P2P Communication
 | |
| 
 | |
|     This file handles the mail interface
 | |
| 
 | |
|     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/>.
 | |
| */
 | |
| 
 | |
| var sendbutton = document.getElementById('sendMail')
 | |
| messageContent = document.getElementById('draftText')
 | |
| to = document.getElementById('draftID')
 | |
| subject = document.getElementById('draftSubject')
 | |
| friendPicker = document.getElementById('friendSelect')
 | |
| 
 | |
| function utf8Length(s) {
 | |
|     var size = encodeURIComponent(s).match(/%[89ABab]/g);
 | |
|     return s.length + (size ? size.length : 0);
 | |
|   }
 | |
| 
 | |
| function padString(string_data, round_nearest_byte_exponent = 3){
 | |
|     if (utf8Length(string_data) === 0){
 | |
|         string_data += '0'
 | |
|     }
 | |
|     let round_size = 10 ** round_nearest_byte_exponent
 | |
|     while (utf8Length(string_data) % round_size > 0){
 | |
|         string_data += '0'
 | |
|     }
 | |
|     return string_data
 | |
| }
 | |
| 
 | |
| function sendMail(toData, message, subject){
 | |
|     let meta = {'subject': subject}
 | |
| 
 | |
|     if (document.getElementById('messagePaddingSetting').checked){
 | |
|         message = padString(message)
 | |
|     }
 | |
| 
 | |
|     if (document.getElementById('mailSignatureSetting').value !== false){
 | |
|         message += "\n"
 | |
|         message += document.getElementById('mailSignatureSetting').value
 | |
|     }
 | |
| 
 | |
|     postData = {'message': message, 'to': toData, 'type': 'pm', 'encrypt': true, 'meta': JSON.stringify(meta)}
 | |
|     postData.forward = document.getElementById('forwardSecrecySetting').checked
 | |
|     postData = JSON.stringify(postData)
 | |
|     sendForm.style.display = 'none'
 | |
| 
 | |
|     fetch('/insertblock', {
 | |
|         method: 'POST',
 | |
|         body: postData,
 | |
|         headers: {
 | |
|           "content-type": "application/json",
 | |
|           "token": webpass
 | |
|         }})
 | |
|     .then((resp) => resp.text()) // Transform the data into text
 | |
|     .then(function(data) {
 | |
|         sendForm.style.display = 'block'
 | |
|         PNotify.success({
 | |
|             text: 'Queued for sending!',
 | |
|             delay: 3500,
 | |
|             mouseReset: false
 | |
|         })
 | |
|         to.value = subject.value = messageContent.value = ""
 | |
|         friendPicker.value = ""
 | |
|         subject.value = ""
 | |
|       })
 | |
| }
 | |
| 
 | |
| var friendPicker = document.getElementById('friendSelect')
 | |
| friendPicker.onchange = function(){
 | |
|     to.value = friendPicker.value
 | |
| }
 | |
| 
 | |
| sendForm.onsubmit = function(){
 | |
|     if (! to.value.includes("-") && to.value.length !== 56 && to.value.length !== 52){
 | |
|         PNotify.error({
 | |
|             text: 'User ID is not valid'
 | |
|         })
 | |
|     }
 | |
|     else{
 | |
|         sendMail(to.value, messageContent.value, subject.value)
 | |
|     }
 | |
|     return false
 | |
| }
 |