Moved http server to WAContext and added initialization functions

This commit is contained in:
Ziver Koc 2016-07-28 22:33:58 +02:00
parent ba3c548232
commit 9997bcd91a
9 changed files with 59 additions and 21 deletions

View file

@ -22,6 +22,7 @@
package wa.server; package wa.server;
import wa.server.page.WAPage;
import wa.server.page.struct.WAAlert; import wa.server.page.struct.WAAlert;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.db.DBUpgradeHandler; import zutil.db.DBUpgradeHandler;
@ -29,6 +30,8 @@ import zutil.db.handler.SimpleSQLResult;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.log.LogUtil; import zutil.log.LogUtil;
import zutil.net.http.HttpHeader; import zutil.net.http.HttpHeader;
import zutil.net.http.HttpServer;
import zutil.net.http.page.HttpFilePage;
import zutil.plugin.PluginManager; import zutil.plugin.PluginManager;
import zutil.ui.Navigation; import zutil.ui.Navigation;
@ -47,6 +50,7 @@ public class WAContext {
private static Navigation rootNav; private static Navigation rootNav;
private static DBConnection db; private static DBConnection db;
private static PluginManager pluginManager; private static PluginManager pluginManager;
private static HttpServer httpServer;
private ArrayList<WAAlert> alerts; private ArrayList<WAAlert> alerts;
@ -112,6 +116,9 @@ public class WAContext {
handler.upgrade(); handler.upgrade();
} }
httpServer = new HttpServer(80);
httpServer.setDefaultPage(new HttpFilePage(FileUtil.find("WebContent/")));
httpServer.start();
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.SEVERE, null, e); logger.log(Level.SEVERE, null, e);
System.exit(1); System.exit(1);
@ -121,6 +128,12 @@ public class WAContext {
public static DBConnection getDB(){ public static DBConnection getDB(){
return db; return db;
} }
public static HttpServer getHttpServer(){
return httpServer;
}
public static void registerWaPage(WAPage page){
httpServer.setPage(page.getPageName(), page);
}
public static Navigation getRootNav(){ public static Navigation getRootNav(){
return rootNav; return rootNav;
} }

View file

@ -1,5 +1,6 @@
package wa.server; package wa.server;
import wa.server.page.ConfigPage;
import wa.server.page.WAPage; import wa.server.page.WAPage;
import zutil.io.file.FileUtil; import zutil.io.file.FileUtil;
import zutil.log.CompactLogFormatter; import zutil.log.CompactLogFormatter;
@ -27,14 +28,8 @@ public class WebAdminServer {
try { try {
WAContext.initialize(); WAContext.initialize();
HttpServer http = new HttpServer(80); WAPage.initialize();
for (Iterator<WAPage> it = WAContext.getPluginManager().getObjectIterator(WAPage.class); it.hasNext(); ){ ConfigPage.initialize();
WAPage page = it.next();
if (page.getPageName() != null)
http.setPage(page.getPageName(), page);
}
http.setDefaultPage(new HttpFilePage(FileUtil.find("WebContent/")));
http.start();
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();

View file

@ -33,6 +33,7 @@ import zutil.ui.Configurator;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
@ -44,7 +45,7 @@ import java.util.logging.Logger;
* *
* Created by Ziver on 2015-07-27. * Created by Ziver on 2015-07-27.
*/ */
public abstract class ConfigPage extends WAPage { public class ConfigPage extends WAPage {
private static final Logger log = LogUtil.getLogger(); private static final Logger log = LogUtil.getLogger();
private static final String TEMPLATE = "WebContent/page/ConfigPage.tmpl"; private static final String TEMPLATE = "WebContent/page/ConfigPage.tmpl";
@ -53,8 +54,20 @@ public abstract class ConfigPage extends WAPage {
public ConfigPage(Class<? extends WAConfiguration> configClass) { public ConfigPage(Class<? extends WAConfiguration> configClass) {
super(getPageName(configClass));
this.configClass = configClass; this.configClass = configClass;
} }
private static String getPageName(Class<? extends WAConfiguration> configClass){
WAConfiguration.WAConfig params = configClass.getAnnotation(WAConfiguration.WAConfig.class);
if (params != null) {
WAContext.getRootNav()
.createSubNav(WAServicePage.PAGE_NAME)
.createSubNav(params.service())
.createSubNav(params.id(), params.name());
return WAServicePage.PAGE_NAME +"/"+ params.service() +"/"+ params.id();
}
return null;
}
@ -106,19 +119,28 @@ public abstract class ConfigPage extends WAPage {
} }
private WAConfiguration newConfig(){ private static WAConfiguration newConfig(){
return null; return null;
} }
private WAConfiguration getConfig(int id){ private static WAConfiguration getConfig(int id){
return null; return null;
} }
private List<WAConfiguration> getAllConfigs(){ private static List<WAConfiguration> getAllConfigs(){
return null; return null;
} }
private WAConfiguration saveConfig(WAConfiguration target){ private static WAConfiguration saveConfig(WAConfiguration target){
return null; return null;
} }
private WAConfiguration deleteConfig(int id){ private static WAConfiguration deleteConfig(int id){
return null; return null;
} }
public static void initialize() {
for (Iterator<Class<? extends WAConfiguration>> it = WAContext.getPluginManager().getClassIterator(WAConfiguration.class); it.hasNext(); ){
Class<? extends WAConfiguration> clazz = it.next();
WAContext.registerWaPage(new ConfigPage(clazz));
}
}
} }

View file

@ -59,6 +59,7 @@ public class ServiceStatusPage extends WAPage {
.createSubNav(getPageName(), NAVIGATION_NAME).setWeight(-100); .createSubNav(getPageName(), NAVIGATION_NAME).setWeight(-100);
} }
public ServiceStatusPage(WAServiceStatus ss){ public ServiceStatusPage(WAServiceStatus ss){
super(WAServicePage.NAVIGATION_NAME);
services = new ArrayList<>(); services = new ArrayList<>();
services.add(ss); services.add(ss);
} }

View file

@ -34,6 +34,7 @@ import zutil.parser.json.JSONWriter;
import zutil.ui.Navigation; import zutil.ui.Navigation;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
@ -50,9 +51,6 @@ public abstract class WAPage implements HttpPage{
private Templator tmpl; private Templator tmpl;
public WAPage() {
this(null);
}
public WAPage(String pageName) { public WAPage(String pageName) {
this.pageName = pageName; this.pageName = pageName;
try { try {
@ -130,4 +128,12 @@ public abstract class WAPage implements HttpPage{
Map<String, String> request) { Map<String, String> request) {
return null; return null;
} }
public static void initialize() {
for (Iterator<WAPage> it = WAContext.getPluginManager().getObjectIterator(WAPage.class); it.hasNext(); ){
WAContext.registerWaPage(it.next());
}
}
} }

View file

@ -41,6 +41,7 @@ import java.util.logging.Logger;
*/ */
public abstract class WAServicePage extends WAPage { public abstract class WAServicePage extends WAPage {
private static final Logger log = LogUtil.getLogger(); private static final Logger log = LogUtil.getLogger();
public static final String PAGE_NAME = "service";
public static final String NAVIGATION_NAME = "Services"; public static final String NAVIGATION_NAME = "Services";
private static final String TMPL_FILE = "WebContent/page/ServicePage.tmpl"; private static final String TMPL_FILE = "WebContent/page/ServicePage.tmpl";
@ -50,7 +51,7 @@ public abstract class WAServicePage extends WAPage {
public WAServicePage(String name, String niceName){ public WAServicePage(String name, String niceName){
super("service/"+name); super(PAGE_NAME +"/"+ name);
WAContext.getRootNav().createSubNav(NAVIGATION_NAME).setWeight(100) WAContext.getRootNav().createSubNav(NAVIGATION_NAME).setWeight(100)
.createSubNav(getPageName(), niceName); .createSubNav(getPageName(), niceName);

View file

@ -1,6 +1,5 @@
package wa.server.plugin; package wa.server.plugin;
import zutil.db.bean.DBBean;
/** /**
* Created by Ziver on 2016-07-27. * Created by Ziver on 2016-07-27.
@ -10,6 +9,7 @@ public abstract class WAConfiguration{
public @interface WAConfig{ public @interface WAConfig{
String id(); String id();
String name(); String name();
String service();
} }

View file

@ -6,7 +6,7 @@ import zutil.ui.Configurator;
import java.io.PrintStream; import java.io.PrintStream;
@WAConfiguration.WAConfig(id="proxy", name="Proxy") @WAConfiguration.WAConfig(service=ApacheService.PAGE_NAME, id="proxy", name="Proxy")
public class ApacheConfigProxy extends ApacheAbstractConfig { public class ApacheConfigProxy extends ApacheAbstractConfig {
@Configurator.Configurable("Proxy Target") @Configurator.Configurable("Proxy Target")

View file

@ -6,7 +6,7 @@ import zutil.ui.Configurator;
import java.io.PrintStream; import java.io.PrintStream;
@WAConfiguration.WAConfig(id="vhost", name="VirtualHost") @WAConfiguration.WAConfig(service=ApacheService.PAGE_NAME, id="vhost", name="VirtualHost")
public class ApacheConfigVirtualHost extends ApacheAbstractConfig { public class ApacheConfigVirtualHost extends ApacheAbstractConfig {
@Configurator.Configurable("Document Root") @Configurator.Configurable("Document Root")