@@ -64,6 +64,16 @@ function insert($event_name,$data) {
6464 function update ($ event_name ,$ data ) {
6565 global $ app , $ conf ;
6666
67+
68+ if ($ data ["new " ]["type " ] != "vhost " && $ data ["new " ]["parent_domain_id " ] > 0 ) {
69+ // This is not a vhost, so we need to update the parent record instead.
70+ $ parent_domain_id = intval ($ data ["new " ]["parent_domain_id " ]);
71+ $ tmp = $ app ->db ->queryOneRecord ("SELECT * FROM web_domain WHERE domain_id = " .$ parent_domain_id );
72+ $ data ["new " ] = $ tmp ;
73+ $ data ["old " ] = $ tmp ;
74+ }
75+
76+
6777 // load the server configuration options
6878 $ app ->uses ("getconf " );
6979 $ web_config = $ app ->getconf ->get_server_config ($ conf ["server_id " ], 'web ' );
@@ -72,6 +82,10 @@ function update($event_name,$data) {
7282 $ app ->log ("document_root not set " ,LOGLEVEL_WARN );
7383 return 0 ;
7484 }
85+ if ($ data ["new " ]["system_user " ] == 'root ' or $ data ["new " ]["system_group " ] == 'root ' ) {
86+ $ app ->log ("Websites can not be owned by the root user or group. " ,LOGLEVEL_WARN );
87+ return 0 ;
88+ }
7589
7690 //print_r($data);
7791
@@ -99,6 +113,20 @@ function update($event_name,$data) {
99113 $ app ->log ("Adding the user: $ username " ,LOGLEVEL_DEBUG );
100114 }
101115
116+ // Set the quota for the user
117+ if ($ username != '' && $ app ->system ->is_user ($ username )) {
118+ if ($ data ["new " ]["hd_quota " ] > 0 ){
119+ $ blocks_soft = $ data ["new " ]["hd_quota " ] * 1024 ;
120+ $ blocks_hard = $ blocks_soft + 1024 ;
121+ } else {
122+ $ blocks_soft = $ blocks_hard = 0 ;
123+ }
124+ exec ("setquota -u $ username $ blocks_soft $ blocks_hard 0 0 -a &> /dev/null " );
125+ exec ("setquota -T -u $ username 604800 604800 -a &> /dev/null " );
126+ }
127+
128+
129+
102130 // Chown and chmod the directories
103131 exec ("chown -R $ username: $ groupname " .escapeshellcmd ($ data ["new " ]["document_root " ]));
104132
@@ -109,16 +137,35 @@ function update($event_name,$data) {
109137 $ tpl ->newTemplate ("vhost.conf.master " );
110138
111139 $ vhost_data = $ data ["new " ];
112- $ vhost_data ["document_root " ] = $ data ["new " ]["document_root " ]."/web " ;
140+ $ vhost_data ["web_document_root " ] = $ data ["new " ]["document_root " ]."/web " ;
141+ //$vhost_data["document_root"] = $data["new"]["document_root"]."/web";
113142 $ tpl ->setVar ($ vhost_data );
114143
115- // get alias domains
144+ // Rewrite rules
145+ $ rewrite_rules = array ();
146+ if ($ data ["new " ]["redirect_type " ] != '' ) {
147+ $ rewrite_rules [] = array ( 'rewrite_domain ' => $ data ["new " ]["domain " ],
148+ 'rewrite_type ' => $ data ["new " ]["redirect_type " ],
149+ 'rewrite_target ' => $ data ["new " ]["redirect_path " ]);
150+ }
151+
152+ // get alias domains (co-domains and subdomains)
116153 $ aliases = $ app ->db ->queryAllRecords ("SELECT * FROM web_domain WHERE parent_domain_id = " .$ data ["new " ]["domain_id " ]);
117154 $ server_alias = '' ;
118- foreach ($ aliases as $ alias ) {
119- $ server_alias .= $ alias ["domain " ].' ' ;
155+ if (is_array ($ aliases )) {
156+ foreach ($ aliases as $ alias ) {
157+ $ server_alias .= $ alias ["domain " ].' ' ;
158+ $ app ->log ("Add server alias: $ alias [domain]" ,LOGLEVEL_DEBUG );
159+ // Rewriting
160+ if ($ alias ["redirect_type " ] != '' ) {
161+ $ rewrite_rules [] = array ( 'rewrite_domain ' => $ alias ["domain " ],
162+ 'rewrite_type ' => $ alias ["redirect_type " ],
163+ 'rewrite_target ' => $ alias ["redirect_path " ]);
164+ }
165+ }
120166 }
121167 $ tpl ->setVar ('alias ' ,trim ($ server_alias ));
168+ $ tpl ->setLoop ('redirects ' ,$ rewrite_rules );
122169
123170 $ vhost_file = escapeshellcmd ($ web_config ["vhost_conf_dir " ].'/ ' .$ data ["new " ]["domain " ].'.vhost ' );
124171 file_put_contents ($ vhost_file ,$ tpl ->grab ());
0 commit comments