aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/server.js142
-rw-r--r--res/client.js15
-rw-r--r--src/client/Main.hx5
-rw-r--r--src/server/Main.hx5
4 files changed, 145 insertions, 22 deletions
diff --git a/build/server.js b/build/server.js
index 65d13a9..5134d74 100644
--- a/build/server.js
+++ b/build/server.js
@@ -69,6 +69,100 @@ ClientTools.getByName = function(clients,name,def) {
}
return def;
};
+var DateTools = function() { };
+DateTools.__name__ = true;
+DateTools.__format_get = function(d,e) {
+ switch(e) {
+ case "%":
+ return "%";
+ case "A":
+ return DateTools.DAY_NAMES[d.getDay()];
+ case "B":
+ return DateTools.MONTH_NAMES[d.getMonth()];
+ case "C":
+ return StringTools.lpad(Std.string(d.getFullYear() / 100 | 0),"0",2);
+ case "D":
+ return DateTools.__format(d,"%m/%d/%y");
+ case "F":
+ return DateTools.__format(d,"%Y-%m-%d");
+ case "I":case "l":
+ var hour = d.getHours() % 12;
+ return StringTools.lpad(Std.string(hour == 0 ? 12 : hour),e == "I" ? "0" : " ",2);
+ case "M":
+ return StringTools.lpad(Std.string(d.getMinutes()),"0",2);
+ case "R":
+ return DateTools.__format(d,"%H:%M");
+ case "S":
+ return StringTools.lpad(Std.string(d.getSeconds()),"0",2);
+ case "T":
+ return DateTools.__format(d,"%H:%M:%S");
+ case "Y":
+ return Std.string(d.getFullYear());
+ case "a":
+ return DateTools.DAY_SHORT_NAMES[d.getDay()];
+ case "b":case "h":
+ return DateTools.MONTH_SHORT_NAMES[d.getMonth()];
+ case "d":
+ return StringTools.lpad(Std.string(d.getDate()),"0",2);
+ case "e":
+ return Std.string(d.getDate());
+ case "H":case "k":
+ return StringTools.lpad(Std.string(d.getHours()),e == "H" ? "0" : " ",2);
+ case "m":
+ return StringTools.lpad(Std.string(d.getMonth() + 1),"0",2);
+ case "n":
+ return "\n";
+ case "p":
+ if(d.getHours() > 11) {
+ return "PM";
+ } else {
+ return "AM";
+ }
+ break;
+ case "r":
+ return DateTools.__format(d,"%I:%M:%S %p");
+ case "s":
+ return Std.string(d.getTime() / 1000 | 0);
+ case "t":
+ return "\t";
+ case "u":
+ var t = d.getDay();
+ if(t == 0) {
+ return "7";
+ } else if(t == null) {
+ return "null";
+ } else {
+ return "" + t;
+ }
+ break;
+ case "w":
+ return Std.string(d.getDay());
+ case "y":
+ return StringTools.lpad(Std.string(d.getFullYear() % 100),"0",2);
+ default:
+ throw new js__$Boot_HaxeError("Date.format %" + e + "- not implemented yet.");
+ }
+};
+DateTools.__format = function(d,f) {
+ var r_b = "";
+ var p = 0;
+ while(true) {
+ var np = f.indexOf("%",p);
+ if(np < 0) {
+ break;
+ }
+ var len = np - p;
+ r_b += len == null ? HxOverrides.substr(f,p,null) : HxOverrides.substr(f,p,len);
+ r_b += Std.string(DateTools.__format_get(d,HxOverrides.substr(f,np + 1,1)));
+ p = np + 2;
+ }
+ var len1 = f.length - p;
+ r_b += len1 == null ? HxOverrides.substr(f,p,null) : HxOverrides.substr(f,p,len1);
+ return r_b;
+};
+DateTools.format = function(d,f) {
+ return DateTools.__format(d,f);
+};
var EReg = function(r,opt) {
this.r = new RegExp(r,opt.split("u").join(""));
};
@@ -147,6 +241,14 @@ EReg.prototype = {
};
var HxOverrides = function() { };
HxOverrides.__name__ = true;
+HxOverrides.dateStr = function(date) {
+ var m = date.getMonth() + 1;
+ var d = date.getDate();
+ var h = date.getHours();
+ var mi = date.getMinutes();
+ var s = date.getSeconds();
+ return date.getFullYear() + "-" + (m < 10 ? "0" + m : "" + m) + "-" + (d < 10 ? "0" + d : "" + d) + " " + (h < 10 ? "0" + h : "" + h) + ":" + (mi < 10 ? "0" + mi : "" + mi) + ":" + (s < 10 ? "0" + s : "" + s);
+};
HxOverrides.substr = function(s,pos,len) {
if(len == null) {
len = s.length;
@@ -306,6 +408,16 @@ StringTools.startsWith = function(s,start) {
return false;
}
};
+StringTools.lpad = function(s,c,l) {
+ if(c.length <= 0) {
+ return s;
+ }
+ var buf_b = "";
+ l -= s.length;
+ while(buf_b.length < l) buf_b += c == null ? "null" : "" + c;
+ buf_b += s == null ? "null" : "" + s;
+ return buf_b;
+};
StringTools.replace = function(s,sub,by) {
return s.split(sub).join(by);
};
@@ -976,8 +1088,8 @@ var server_Main = function() {
}
server_Utils.getGlobalIp(function(ip) {
_gthis.globalIp = ip;
- haxe_Log.trace("Local: http://" + _gthis.localIp + ":" + _gthis.port,{ fileName : "src/server/Main.hx", lineNumber : 79, className : "server.Main", methodName : "new"});
- haxe_Log.trace("Global: http://" + _gthis.globalIp + ":" + _gthis.port,{ fileName : "src/server/Main.hx", lineNumber : 80, className : "server.Main", methodName : "new"});
+ haxe_Log.trace("Local: http://" + _gthis.localIp + ":" + _gthis.port,{ fileName : "src/server/Main.hx", lineNumber : 78, className : "server.Main", methodName : "new"});
+ haxe_Log.trace("Global: http://" + _gthis.globalIp + ":" + _gthis.port,{ fileName : "src/server/Main.hx", lineNumber : 79, className : "server.Main", methodName : "new"});
return;
});
var dir = "" + this.rootDir + "/res";
@@ -1046,7 +1158,7 @@ server_Main.prototype = {
var field = _g1[_g];
++_g;
if(Reflect.field(config,field) == null) {
- haxe_Log.trace("Warning: config field \"" + field + "\" is unknown",{ fileName : "src/server/Main.hx", lineNumber : 130, className : "server.Main", methodName : "getUserConfig"});
+ haxe_Log.trace("Warning: config field \"" + field + "\" is unknown",{ fileName : "src/server/Main.hx", lineNumber : 129, className : "server.Main", methodName : "getUserConfig"});
}
config[field] = Reflect.field(customConfig,field);
}
@@ -1067,7 +1179,7 @@ server_Main.prototype = {
js_node_Fs.writeFileSync("" + folder + "/users.json",JSON.stringify(users,null,"\t"));
}
,saveState: function() {
- haxe_Log.trace("Saving state...",{ fileName : "src/server/Main.hx", lineNumber : 154, className : "server.Main", methodName : "saveState"});
+ haxe_Log.trace("Saving state...",{ fileName : "src/server/Main.hx", lineNumber : 153, className : "server.Main", methodName : "saveState"});
var json = JSON.stringify({ videoList : this.videoList, isPlaylistOpen : this.isPlaylistOpen, itemPos : this.itemPos, messages : this.messages, timer : { time : this.videoTimer.getTime(), paused : this.videoTimer.isPaused()}},null,"\t");
js_node_Fs.writeFileSync(this.statePath,json);
}
@@ -1075,7 +1187,7 @@ server_Main.prototype = {
if(!sys_FileSystem.exists(this.statePath)) {
return;
}
- haxe_Log.trace("Loading state...",{ fileName : "src/server/Main.hx", lineNumber : 171, className : "server.Main", methodName : "loadState"});
+ haxe_Log.trace("Loading state...",{ fileName : "src/server/Main.hx", lineNumber : 170, className : "server.Main", methodName : "loadState"});
var data = JSON.parse(js_node_Fs.readFileSync(this.statePath,{ encoding : "utf8"}));
this.videoList.length = 0;
this.messages.length = 0;
@@ -1092,13 +1204,12 @@ server_Main.prototype = {
this.videoTimer.pause();
}
,logError: function(type,data) {
- haxe_Log.trace(type,{ fileName : "src/server/Main.hx", lineNumber : 185, className : "server.Main", methodName : "logError", customParams : [data]});
+ haxe_Log.trace(type,{ fileName : "src/server/Main.hx", lineNumber : 184, className : "server.Main", methodName : "logError", customParams : [data]});
var crashesFolder = "" + this.rootDir + "/user/crashes";
- var name = new Date().toISOString() + "-" + type;
if(!sys_FileSystem.exists(crashesFolder)) {
sys_FileSystem.createDirectory(crashesFolder);
}
- js_node_Fs.writeFileSync("" + crashesFolder + "/" + name + ".json",JSON.stringify(data,null,"\t"));
+ js_node_Fs.writeFileSync("" + crashesFolder + "/" + (DateTools.format(new Date(),"%Y-%m-%d_%H_%M_%S") + "-" + type) + ".json",JSON.stringify(data,null,"\t"));
}
,initIntergationHandlers: function() {
var _gthis = this;
@@ -1108,7 +1219,7 @@ server_Main.prototype = {
return;
}
var url = "http://" + process.env["APP_URL"];
- haxe_Log.trace("Ping " + url,{ fileName : "src/server/Main.hx", lineNumber : 199, className : "server.Main", methodName : "initIntergationHandlers"});
+ haxe_Log.trace("Ping " + url,{ fileName : "src/server/Main.hx", lineNumber : 198, className : "server.Main", methodName : "initIntergationHandlers"});
js_node_Http.get(url,function(r) {
return;
});
@@ -1123,14 +1234,14 @@ server_Main.prototype = {
}
this.userList.admins.push({ name : name, hash : hash});
this.writeUsers(this.userList);
- haxe_Log.trace("Admin " + name + " added.",{ fileName : "src/server/Main.hx", lineNumber : 214, className : "server.Main", methodName : "addAdmin"});
+ haxe_Log.trace("Admin " + name + " added.",{ fileName : "src/server/Main.hx", lineNumber : 213, className : "server.Main", methodName : "addAdmin"});
}
,onConnect: function(ws,req) {
var _gthis = this;
var ip = req.connection.remoteAddress;
var id = this.freeIds.length > 0 ? this.freeIds.shift() : this.clients.length;
var name = "Guest " + (id + 1);
- haxe_Log.trace("" + name + " connected (" + ip + ")",{ fileName : "src/server/Main.hx", lineNumber : 221, className : "server.Main", methodName : "onConnect"});
+ haxe_Log.trace("" + name + " connected (" + ip + ")",{ fileName : "src/server/Main.hx", lineNumber : 220, className : "server.Main", methodName : "onConnect"});
var client = new Client(ws,req,id,name,0);
client.setGroupFlag(ClientGroup.Admin,req.connection.localAddress == ip);
this.clients.push(client);
@@ -1154,7 +1265,7 @@ server_Main.prototype = {
return;
});
ws.on("close",function(err) {
- haxe_Log.trace("Client " + client.name + " disconnected",{ fileName : "src/server/Main.hx", lineNumber : 251, className : "server.Main", methodName : "onConnect"});
+ haxe_Log.trace("Client " + client.name + " disconnected",{ fileName : "src/server/Main.hx", lineNumber : 250, className : "server.Main", methodName : "onConnect"});
server_Utils.sortedPush(_gthis.freeIds,client.id);
HxOverrides.remove(_gthis.clients,client);
_gthis.sendClientList();
@@ -1293,7 +1404,7 @@ server_Main.prototype = {
}
data.message.text = text;
data.message.clientName = client.name;
- var time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
+ var time = "[" + HxOverrides.dateStr(new Date()).split(" ")[1] + "] ";
this.messages.push({ text : text, name : client.name, time : time});
if(this.messages.length > this.config.serverChatHistory) {
this.messages.shift();
@@ -1695,10 +1806,15 @@ $global.$haxeUID |= 0;
var __map_reserved = {};
String.__name__ = true;
Array.__name__ = true;
+Date.__name__ = "Date";
Object.defineProperty(js__$Boot_HaxeError.prototype,"message",{ get : function() {
return String(this.val);
}});
js_Boot.__toStr = ({ }).toString;
+DateTools.DAY_SHORT_NAMES = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
+DateTools.DAY_NAMES = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
+DateTools.MONTH_SHORT_NAMES = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
+DateTools.MONTH_NAMES = ["January","February","March","April","May","June","July","August","September","October","November","December"];
Lang.langs = new haxe_ds_StringMap();
Lang.ids = ["en","ru"];
server_HttpServer.mimeTypes = (function($this) {
diff --git a/res/client.js b/res/client.js
index 932f180..4870d85 100644
--- a/res/client.js
+++ b/res/client.js
@@ -82,6 +82,14 @@ EReg.prototype = {
};
var HxOverrides = function() { };
HxOverrides.__name__ = true;
+HxOverrides.dateStr = function(date) {
+ var m = date.getMonth() + 1;
+ var d = date.getDate();
+ var h = date.getHours();
+ var mi = date.getMinutes();
+ var s = date.getSeconds();
+ return date.getFullYear() + "-" + (m < 10 ? "0" + m : "" + m) + "-" + (d < 10 ? "0" + d : "" + d) + " " + (h < 10 ? "0" + h : "" + h) + ":" + (mi < 10 ? "0" + mi : "" + mi) + ":" + (s < 10 ? "0" + s : "" + s);
+};
HxOverrides.substr = function(s,pos,len) {
if(len == null) {
len = s.length;
@@ -977,7 +985,7 @@ client_Main.prototype = {
var data = JSON.parse(e.data);
var t = data.type;
var t1 = t.charAt(0).toLowerCase() + HxOverrides.substr(t,1,null);
- haxe_Log.trace("Event: " + data.type,{ fileName : "src/client/Main.hx", lineNumber : 260, className : "client.Main", methodName : "onMessage", customParams : [data[t1]]});
+ haxe_Log.trace("Event: " + data.type,{ fileName : "src/client/Main.hx", lineNumber : 259, className : "client.Main", methodName : "onMessage", customParams : [data[t1]]});
switch(data.type) {
case "AddVideo":
this.player.addVideoItem(data.addVideo.item,data.addVideo.atEnd);
@@ -1250,7 +1258,7 @@ client_Main.prototype = {
}
var msgBuf = window.document.querySelector("#messagebuffer");
var div = window.document.createElement("div");
- var time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
+ var time = "[" + HxOverrides.dateStr(new Date()).split(" ")[1] + "] ";
switch(type) {
case 1:
div.className = "server-msg-reconnect";
@@ -1308,7 +1316,7 @@ client_Main.prototype = {
var tstamp = window.document.createElement("span");
tstamp.className = "timestamp";
if(time == null) {
- time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
+ time = "[" + HxOverrides.dateStr(new Date()).split(" ")[1] + "] ";
}
tstamp.textContent = time;
var nameDiv = window.document.createElement("strong");
@@ -2764,6 +2772,7 @@ var __map_reserved = {};
if( String.fromCodePoint == null ) String.fromCodePoint = function(c) { return c < 0x10000 ? String.fromCharCode(c) : String.fromCharCode((c>>10)+0xD7C0)+String.fromCharCode((c&0x3FF)+0xDC00); }
String.__name__ = true;
Array.__name__ = true;
+Date.__name__ = "Date";
Object.defineProperty(js__$Boot_HaxeError.prototype,"message",{ get : function() {
return String(this.val);
}});
diff --git a/src/client/Main.hx b/src/client/Main.hx
index 8edeb8f..0db93a8 100644
--- a/src/client/Main.hx
+++ b/src/client/Main.hx
@@ -11,7 +11,6 @@ import js.html.InputElement;
import js.html.WebSocket;
import js.Browser;
import js.Browser.document;
-import js.lib.Date;
import Client.ClientData;
import Types.VideoData;
import Types.Config;
@@ -508,7 +507,7 @@ class Main {
public function serverMessage(type:Int, ?text:String, isText = true):Void {
final msgBuf = ge("#messagebuffer");
final div = document.createDivElement();
- final time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
+ final time = "[" + Date.now().toString().split(" ")[1] + "] ";
switch (type) {
case 1:
div.className = "server-msg-reconnect";
@@ -560,7 +559,7 @@ class Main {
final tstamp = document.createSpanElement();
tstamp.className = "timestamp";
- if (time == null) time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
+ if (time == null) time = "[" + Date.now().toString().split(" ")[1] + "] ";
tstamp.textContent = time;
final nameDiv = document.createElement("strong");
diff --git a/src/server/Main.hx b/src/server/Main.hx
index e9dd816..bf334a6 100644
--- a/src/server/Main.hx
+++ b/src/server/Main.hx
@@ -11,7 +11,6 @@ import js.npm.ws.Server as WSServer;
import js.npm.ws.WebSocket;
import js.node.http.IncomingMessage;
import js.node.Http;
-import js.lib.Date;
import Client.ClientData;
import Types.Config;
import Types.Permission;
@@ -184,8 +183,8 @@ class Main {
function logError(type:String, data:Dynamic):Void {
trace(type, data);
final crashesFolder = '$rootDir/user/crashes';
- final name = new Date().toISOString() + "-" + type;
if (!FileSystem.exists(crashesFolder)) FileSystem.createDirectory(crashesFolder);
+ final name = DateTools.format(Date.now(), "%Y-%m-%d_%H_%M_%S") + "-" + type;
File.saveContent('$crashesFolder/$name.json', Json.stringify(data, "\t"));
}
@@ -329,7 +328,7 @@ class Main {
}
data.message.text = text;
data.message.clientName = client.name;
- final time = "[" + new Date().toTimeString().split(" ")[0] + "] ";
+ final time = "[" + Date.now().toString().split(" ")[1] + "] ";
messages.push({text: text, name: client.name, time: time});
if (messages.length > config.serverChatHistory) messages.shift();
broadcast(data);
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage