1 /* Copyright (C) 2013 Vladimir Panteleev <vladimir@thecybershadow.net> 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU Affero General Public License as 5 * published by the Free Software Foundation, either version 3 of the 6 * License, or (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU Affero General Public License for more details. 12 * 13 * You should have received a copy of the GNU Affero General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 17 module mywormnet2; 18 19 import std.getopt; 20 import std.stdio; 21 22 import ae.net.asockets; 23 import ae.sys.log; 24 import ae.utils.sini; 25 26 import common; 27 import http; 28 import irc; 29 30 alias common.configuration configuration; // 314 31 32 class WormNETServer 33 { 34 WormNETHttpServer http; 35 WormNETIrcServer irc; 36 Logger log; 37 38 this() 39 { 40 http = new WormNETHttpServer; 41 irc = new WormNETIrcServer; 42 } 43 44 void start() 45 { 46 irc.log = log; 47 irc.listen(configuration.irc.port); 48 49 http.server.log = log; 50 http.server.listen(configuration.http.port); 51 } 52 } 53 54 bool quiet; 55 56 void main(string[] args) 57 { 58 getopt(args, 59 "q", &quiet, 60 ); 61 62 configuration = File("mywormnet2.ini").byLine.parseStructuredIni!Configuration; 63 64 auto server = new WormNETServer(); 65 server.log = quiet ? new FileLogger("MyWormNET2") : new FileAndConsoleLogger("MyWormNET2"); 66 server.start(); 67 socketManager.loop(); 68 }