mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 'require form';
 | |
| 'require uci';
 | |
| 'require ui';
 | |
| 'require shadowsocks-libev as ss';
 | |
| 
 | |
| var conf = 'shadowsocks-libev';
 | |
| 
 | |
| return L.view.extend({
 | |
| 	render: function() {
 | |
| 		var m, s, o;
 | |
| 
 | |
| 		m = new form.Map(conf, _('Remote Servers'),
 | |
| 			_('Definition of remote shadowsocks servers.  \
 | |
| 				Disable any of them will also disable instances referring to it.'));
 | |
| 
 | |
| 		s = m.section(form.GridSection, 'server');
 | |
| 		s.addremove = true;
 | |
| 		s.handleLinkImport = function() {
 | |
| 			var textarea = new ui.Textarea();
 | |
| 			ui.showModal(_('Import Links'), [
 | |
| 				textarea.render(),
 | |
| 				E('div', { class: 'right' }, [
 | |
| 					E('button', {
 | |
| 						class: 'btn',
 | |
| 						click: ui.hideModal
 | |
| 					}, [ _('Cancel') ]),
 | |
| 					' ',
 | |
| 					E('button', {
 | |
| 						class: 'btn cbi-button-action',
 | |
| 						click: ui.createHandlerFn(this, function() {
 | |
| 							textarea.getValue().split('\n').forEach(function(s) {
 | |
| 								var config = ss.parse_uri(s);
 | |
| 								if (config) {
 | |
| 									var tag = config[1];
 | |
| 									if (tag && !tag.match(/^[a-zA-Z0-9_]+$/)) tag = null;
 | |
| 									var sid = uci.add(conf, 'server', tag);
 | |
| 									config = config[0];
 | |
| 									Object.keys(config).forEach(function(k) {
 | |
| 										uci.set(conf, sid, k, config[k]);
 | |
| 									});
 | |
| 								}
 | |
| 							});
 | |
| 							return uci.save()
 | |
| 								.then(L.bind(this.map.load, this.map))
 | |
| 								.then(L.bind(this.map.reset, this.map))
 | |
| 								.then(L.ui.hideModal)
 | |
| 								.catch(function() {});
 | |
| 						})
 | |
| 					}, [ _('Import') ])
 | |
| 				])
 | |
| 			]);
 | |
| 		};
 | |
| 		s.renderSectionAdd = function(extra_class) {
 | |
| 			var el = form.GridSection.prototype.renderSectionAdd.apply(this, arguments);
 | |
| 			el.appendChild(E('button', {
 | |
| 				'class': 'cbi-button cbi-button-add',
 | |
| 				'title': _('Import Links'),
 | |
| 				'click': ui.createHandlerFn(this, 'handleLinkImport')
 | |
| 			}, [ _('Import Links') ]));
 | |
| 			return el;
 | |
| 		};
 | |
| 
 | |
| 		o = s.option(form.Flag, 'disabled', _('Disable'));
 | |
| 		o.editable = true;
 | |
| 
 | |
| 		ss.options_server(s);
 | |
| 
 | |
| 		return m.render();
 | |
| 	},
 | |
| 	addFooter: function() {
 | |
| 		var p = '#edit=';
 | |
| 		if (location.hash.indexOf(p) === 0) {
 | |
| 			var section_id = location.hash.substring(p.length);
 | |
| 			var editBtn = document.querySelector('#cbi-shadowsocks-libev-' + section_id + ' button.cbi-button-edit');
 | |
| 			if (editBtn)
 | |
| 				editBtn.click();
 | |
| 		}
 | |
| 		//return this.super('addFooter', arguments);
 | |
| 		return null;
 | |
| 	}
 | |
| });
 |