Просмотр исходного кода

Merge branch 'master' of github.com:serghey-rodin/vesta

Serghey Rodin 14 лет назад
Родитель
Сommit
6af483e6ec
4 измененных файлов с 134 добавлено и 45 удалено
  1. 16 0
      web/js/actions.js
  2. 1 0
      web/js/pages.js
  3. 30 18
      web/js/templates.js
  4. 87 27
      web/vesta/api/WEB_DOMAIN.class.php

+ 16 - 0
web/js/actions.js

@@ -1,3 +1,13 @@
+App.Actions.view_nginx_extensions = function(evt)
+{
+    var elm = $(evt.target);
+    var ref = elm.hasClass('row') ? elm : elm.parents('.row');
+    var data = App.Helpers.evalJSON(ref.find('.source').val());
+    var extensions = data['NGINX_EXT'] || '';
+    var html = extensions.replace(/,/gi, ' ');
+    App.Helpers.openInnerPopup(elm, html, 'Nginx extensions');
+}
+
 App.Actions.login_as = function(evt) 
 {
     var elm = $(evt.target);
@@ -617,6 +627,12 @@ App.Actions.view_full_ns_list = function(evt)
     App.Helpers.openInnerPopup(elm, $(elm).parents('.prop-box').find('.ns-full-list:first').html(), 'Name Server list');    
 }
 
+App.Actions.view_full_web_templates = function(evt)
+{
+    var elm = $(evt.target);
+    App.Helpers.openInnerPopup(elm, $(elm).parents('.prop-box').find('.ns-full-list:first').html(), 'Web Templates list');    
+}
+
 App.Actions.view_template_info = function(evt)
 {
     var elm = $(evt.target);

+ 1 - 0
web/js/pages.js

@@ -25,6 +25,7 @@ App.Pages.init = function()
 
 App.Pages.prepareHTML = function()
 {
+	$('.d-popup').remove();
     App.Actions.reset_batch();
     $('#actions-toolbar .stats-subbar').remove();
     $('#actions-toolbar .do_action_new_entry').removeClass('hidden');

+ 30 - 18
web/js/templates.js

@@ -303,7 +303,7 @@ App.Templates.html = {
                 <input type="hidden" class="source" name="source" value=\'~!:source~!\' />\
                 <input type="hidden" class="target" name="target" value="" />\
                 <div class="row-actions-box cc">\
-                        <div class="check-this"></div>\
+                        <div class="check-this check-control"></div>\
                         <div class="row-operations">\
                             ~!:SUSPENDED_TPL~!\
                         </div>\
@@ -362,7 +362,7 @@ App.Templates.html = {
     user: {
         WEB_TPL_MINIMIZED: ['~!:WEB_TPL_MINI~!\
                         <span class="group-switcher">\
-                            <span class="group-values-count do_action_view_full_ns_list">~!:MORE_NUMBER~! more</span>\
+                            <span class="group-values-count do_action_view_full_web_templates">~!:MORE_NUMBER~! more</span>\
                         </span><span class="hidden ns-full-list"><span class="group-values">~!:WEB_TPL_FULL~!</span></span>'],
         WEB_TPL: ['<span class="prop-value">~!:NAME~!</span>'],
         NS_MINIMIZED: ['~!:NS_MINI~!\
@@ -509,19 +509,19 @@ App.Templates.html = {
                                             <div class="max-size">~!:DISK_QUOTA~! <span class="units">~!:DISK_QUOTA_MEASURE_2~!</span></div>\
                                         </div>\
                                     </div><!-- // disk usage block -->\
-                                <div class="b-usage-box2 bandwidth-box cc">\
-                                        <span class="prop-title">bandwidth:</span>\
-                                        <div class="usage-box">\
-                                            <div class="value-box ~!:OVER_DRAFT_VALUE_2~!">\
-                                                <div class="graph">\
-                                                    <span style="left:~!:U_BANDWIDTH_PERCENTAGE_2~!%;" class="value">~!:U_BANDWIDTH_PERCENTAGE~!% <span class="value-size">(~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)</span></span>\
-                                                    <span style="width:~!:U_BANDWIDTH_PERCENTAGE_3~!%;" class="bar"></span>\
-                                                    ~!:OVER_BAR_2~!\
-                                                </div>\
-                                            </div>\
-                                            <div class="max-size">~!:BANDWIDTH~! <span class="units">~!:BANDWIDTH_MEASURE_2~!</span></div>\
-                                        </div>\
-                                    </div>\
+									<div class="b-usage-box2 bandwidth-box cc">\
+										<span class="prop-title">bandwidth:</span>\
+										<div class="usage-box">\
+											<div class="value-box ~!:OVER_DRAFT_VALUE_2~!">\
+												<div class="graph">\
+													<span style="left:~!:U_BANDWIDTH_PERCENTAGE_2~!%;" class="value">~!:U_BANDWIDTH_PERCENTAGE~!% <span class="value-size">(~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)</span></span>\
+													<span style="width:~!:U_BANDWIDTH_PERCENTAGE_3~!%;" class="bar"></span>\
+													~!:OVER_BAR_2~!\
+												</div>\
+											</div>\
+											<div class="max-size">~!:BANDWIDTH~! <span class="units">~!:BANDWIDTH_MEASURE_2~!</span></div>\
+										</div>\
+									</div>\
 								</div><!-- // stats block -->\
                                 \
                             </div>\
@@ -641,6 +641,10 @@ App.Templates.html = {
 								<label for="#" class="field-label">Domain Aliases:</label>\
 								<textarea name="ALIAS" class="textarea rule-alias">~!:ALIAS~!</textarea>\
 							</div>\
+							<div class="form-row cc">\
+								<label for="#" class="field-label">Nginx extensions:</label>\
+								<textarea name="NGINX_EXT" class="textarea rule-list">~!:NGINX_EXT~!</textarea>\
+							</div>\
 							<div class="form-row cc">\
 								<label for="#" class="field-label">Statistics:</label>\
 								<select name="STAT" class="styled">~!:STAT_OPTIONS~!</select>\
@@ -762,7 +766,7 @@ App.Templates.html = {
                                         </div>\
                                     </div><!-- // disk usage block -->\
 									<!-- bandwidth block -->\
-                                <div class="b-usage-box2 bandwidth-box cc">\
+									<div class="b-usage-box2 bandwidth-box cc">\
                                         <span class="prop-title">bandwidth:</span>\
                                         <div class="usage-box">\
                                             <div class="value-box ~!:OVER_DRAFT_VALUE_2~!">\
@@ -809,7 +813,7 @@ App.Templates.html = {
 									<span class="prop-value">~!:NGINX~!</span>\
 									<span class="nginx-ext-list do_action_view_nginx_extensions">extension list</span>\
 								</span>\
-							</div>							\
+							</div>\
 						</div><!-- // .row-details -->\
 					</div>']
     },
@@ -856,6 +860,10 @@ App.Templates.html = {
 							<label for="#" class="field-label">Host:</label>\
 							<select name="HOST" class="styled">~!:HOST_OPTIONS~!</select>\
 						</div>\
+						<div class="form-row cc">\
+							<label for="#" class="field-label">Encoding:</label>\
+							<select name="TYPE" class="styled">~!:ENCODING_OPTIONS~!</select>\
+						</div>\
 						<div class="form-row suspended cc">\
                             <label for="#" class="field-label">Suspended:</label>\
                             <input type="checkbox" ~!:SUSPENDED_CHECKED~! value="~!:SUSPENDED_VALUE~!" class="styled do_action_toggle_suspend" name="SUSPEND" />\
@@ -899,7 +907,11 @@ App.Templates.html = {
 								<span class="add-db-user do_action_add_db_user">Add user</span>\
 							</div>\
 							<div class="props-ext">\
-								<span class="backup-db do_action_backup_db">backup</span>\
+								<!-- span class="backup-db do_action_backup_db">backup</span-->\
+									<span class="prop-box">\
+										<span class="prop-title">encoding:</span>\
+										<span class="prop-value">~!:ENCODING~!</span>\
+									</span>\
 								<!-- disk usage block -->\
 								<div class="b-usage-box disk-usage cc">\
 									<div class="usage-box">\

+ 87 - 27
web/vesta/api/WEB_DOMAIN.class.php

@@ -38,14 +38,26 @@ class WEB_DOMAIN extends AjaxHandler
                               'STATS_LOGIN' => $record['STATS_AUTH'],
                               'SSL'         => $record['SSL'],
                               'SSL_HOME'    => $record['SSL_HOME'],
-                              'SSL_CERT'    => $record['SSL_CERT'],
-                              'SSL_KEY'		=> $record['SSL_KEY'],
+                              'SSL_CRT'     => '',
+                              'SSL_KEY'		=> '',
+                              'SSL_CA'		=> '',
                               'NGINX'       => $record['NGINX'],
                               'NGINX_EXT'   => $record['NGINX_EXT'],
-                              'SUSPEND'     => $record['SUSPEND'],
+                              'SUSPEND'     => $record['SUSPEND'] == 'on' ? 'on' : 'off',
                               'DATE'        => date(Config::get('ui_date_format', strtotime($record['DATE'])))
                           );
             $web_details['STAT'] == '' ? $web_details['STAT'] = 'none' : true;
+
+            if($record['SSL'] == 'yes'){
+                $result_ssl = Vesta::execute(Vesta::V_LIST_WEB_DOMAIN_SSL, array('USER' => $user['uid'], 'DOMAIN' => $web_domain, self::JSON));
+
+                if($result_ssl['status']){
+                    foreach ($result_ssl['data'][$web_domain] as $key => $value) {
+                        $web_details['SSL_'.$key] = $value;
+                    }
+                }
+            }
+            
             $reply[$web_domain] = $web_details;
         }
 
@@ -439,25 +451,7 @@ class WEB_DOMAIN extends AjaxHandler
             }
         }
         
-        /*if ($_new['SSL']) {
-			$params = array(
-						'USER'     => $user['uid'],
-						'DOMAIN'   => $_new['DOMAIN'],
-						'SSL_CERT' => $_new['SSL_CERT']
-					  );
-
-			if ($_new['SSL_HOME']) {
-				$params['SSL_HOME'] = $_new['SSL_HOME'];
-			}
-
-			$result = 0;
-			$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
-
-			if (!$result['status']) {
-				$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
-			}
-		}*/
-		
+        /*
 		if (!empty($_s['SSL_KEY'])) {
             $ssl_file = tempnam(sys_get_temp_dir(), 'ssl');
             file_put_contents($ssl_file, $_s['SSL_KEY']);
@@ -498,8 +492,74 @@ class WEB_DOMAIN extends AjaxHandler
 				$this->errors['SSL_CERT'] = array($result['error_code'] => $result['error_message']);
 			}
 		}
-        
-        
+        */
+
+
+		if (!empty($_new['SSL_KEY']) && !empty($_new['SSL_CRT'])) {
+          //          $ssl_dir = sys_get_temp_dir().'/ssl/'.rand();
+            $ssl_dir = sys_get_temp_dir().'/';
+//            if(!mkdir($ssl_dir)){
+//                return $this->reply(FALSE, array('error' => 'can\'t create temp ssl dir: '.$ssl_dir));
+//            }
+
+            
+            
+            $ssl_crt_file = $ssl_dir . $_new['DOMAIN'] . '.crt';
+            if(!file_put_contents($ssl_crt_file, $_new['SSL_CRT']))
+
+            $ssl_key_file = $ssl_dir . $_new['DOMAIN'] . '.key';
+            file_put_contents($ssl_key_file, $_new['SSL_KEY']);
+
+    		if (!empty($_new['SSL_CA'])) {
+                $ssl_ca_file = $ssl_dir . $_new['DOMAIN'] . '.ca';
+                //                file_put_contents($ssl_ca_file, $_new['SSL_CA']);
+            }
+ 
+
+            //            echo '<br>';
+            //            echo $ssl_crt_file;
+            //            echo '<br>';
+            //            echo $ssl_key_file;
+            //            echo '<br>';
+            //            echo $ssl_ca_file;
+
+			$params = array(
+						'USER'     => $user['uid'],
+						'DOMAIN'   => $_DOMAIN,
+                        'SSL_DIR'  => $ssl_dir
+                        //					    'SSL_DIR'  => 'tmp'
+                        );
+
+            //			if (!empty($_s['SSL_HOME'])) {
+            //				$params['SSL_HOME'] = $_s['SSL_HOME'];
+            //			}
+
+			$result = 0;
+
+            if($_old['SSL'] == 'on'){
+                $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSL, $params);
+            }
+            else{
+                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
+            }
+
+            //            print_r($result);
+            
+			if (!$result['status']) {
+				$this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
+			}
+
+            unlink($ssl_crt_file);
+            unlink($ssl_key_file);
+            unlink($ssl_ca_file);
+
+		}
+
+		if (empty($_new['SSL_KEY']) && empty($_new['SSL_CRT']) && $_old['SSL'] == 'on') {
+			$result = 0;
+			$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_SSL, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
+        }
+
         return $this->reply($result['status'], $result['data']);
     }
 
@@ -551,7 +611,7 @@ class WEB_DOMAIN extends AjaxHandler
         $_entities = $request->getParameter('entities');
 
         foreach($_entities as $entity){
-          $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
+          $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], $entity['DOMAIN']));
         }
 
         return $this->reply($result['status'], $result['data']);
@@ -563,7 +623,7 @@ class WEB_DOMAIN extends AjaxHandler
         $_entities = $request->getParameter('entities');
 
         foreach($_entities as $entity){
-            $result = Vesta::execute(Vesta::V_UNUSPEND_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
+            $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], $entity['DOMAIN']));
         }
 
         return $this->reply($result['status'], $result['data']);
@@ -575,7 +635,7 @@ class WEB_DOMAIN extends AjaxHandler
         $_entities = $request->getParameter('entities');
 
         foreach($_entities as $entity){
-            $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
+            $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, array('USER' => $user['uid'], $entity['DOMAIN']));
         }
 
         return $this->reply($result['status'], $result['data']);