1
0
mirror of https://github.com/lxsang/antd-web-apps synced 2025-04-20 02:26:45 +02:00

new wvnc app

This commit is contained in:
Xuan Sang LE 2018-09-17 19:43:24 +02:00
parent c9c50df4f4
commit 467a36b531
11 changed files with 208 additions and 19 deletions

View File

@ -5,7 +5,7 @@ coffees = assets/coffee/bootstrap.coffee \
assets/coffee/BaseObject.coffee \ assets/coffee/BaseObject.coffee \
assets/coffee/APIManager.coffee \ assets/coffee/APIManager.coffee \
assets/coffee/MarkOn.coffee \ assets/coffee/MarkOn.coffee \
assets/coffee/WVNC.coffee
main: js main: js
- mkdir -p $(BUILDDIR)/assets - mkdir -p $(BUILDDIR)/assets
@ -17,7 +17,7 @@ js:
- rm assets/scripts/main.js - rm assets/scripts/main.js
for f in $(coffees); do (cat "$${f}"; echo) >> assets/scripts/main.coffee; done for f in $(coffees); do (cat "$${f}"; echo) >> assets/scripts/main.coffee; done
coffee --compile assets/scripts/main.coffee coffee --compile assets/scripts/main.coffee
- rm assets/scripts/main.coffee -rm assets/scripts/main.coffee
clean: clean:
rm -rf $(BUILDDIR)/* rm -rf $(BUILDDIR)/*

View File

@ -1,9 +1,11 @@
class APIManager extends window.classes.BaseObject class APIManager extends window.classes.BaseObject
constructor: () -> constructor: (@args) ->
super "APIManager" super "APIManager"
init: (cname) -> init: () ->
console.log(cname) me = @
return console.error "No class found" unless @args and @args.length > 0
cname = (@args.splice 0,1)[0].trim()
@ready() @ready()
.then () -> .then () ->
if mobilecheck() if mobilecheck()
@ -11,7 +13,7 @@ class APIManager extends window.classes.BaseObject
# load the class # load the class
return if not cname or cname is "" return if not cname or cname is ""
return console.error("Cannot find class ", cname) unless window.classes[cname] return console.error("Cannot find class ", cname) unless window.classes[cname]
(new window.classes[cname]).init() (new window.classes[cname](me.args)).init()
.catch ( m, s ) -> .catch ( m, s ) ->
console.error(m, s) console.error(m, s)

View File

@ -1,3 +1,14 @@
# private function
require = (lib) ->
return new Promise (r, e) ->
return r() if window.libraries[lib]
$.getScript window.myuri + lib
.done (d) ->
window.libraries[lib] = true
r()
.fail (m, s) ->
e(m, s)
class BaseObject class BaseObject
constructor: (@name) -> constructor: (@name) ->

View File

@ -0,0 +1,57 @@
class WVNC extends window.classes.BaseObject
constructor: (@args) ->
super "WVNC"
@socket = undefined
@uri = undefined
@uri = @args[0] if @args and @args.length > 0
init: () ->
me = @
@ready()
.then () ->
me.openSession()
.catch (m, s) ->
console.error(m, s)
openSession: () ->
me = @
@socket.close() if @socket
return unless @uri
@socket = new WebSocket @uri
@socket.binaryType = "arraybuffer"
@socket.onopen = () ->
console.log "socket opened"
me.initConnection()
@socket.onmessage = (e) ->
me.consume e
@socket.onclose = () ->
me.socket = null
console.log "socket closed"
initConnection: () ->
vncserver = "localhost:5901"
@socket.send(@buildCommand 0x01, vncserver)
buildCommand: (hex, o) ->
data = undefined
switch typeof o
when 'string'
data = (new TextEncoder()).encode(o)
else
data = o
cmd = new Uint8Array data.length + 3
cmd[0] = hex
cmd[2] = data.length >> 8
cmd[1] = data.length & 0x0F
cmd.set data, 3
console.log "the command is", cmd.buffer
return cmd.buffer
consume: (e) ->
console.log e
WVNC.dependencies = [
]
makeclass "WVNC", WVNC

View File

@ -8,6 +8,7 @@ window.mobilecheck = () ->
window.makeclass = (n, o) -> window.classes[n] = o window.makeclass = (n, o) -> window.classes[n] = o
###
window.require = (lib) -> window.require = (lib) ->
return new Promise (r, e) -> return new Promise (r, e) ->
return r() if window.libraries[lib] return r() if window.libraries[lib]
@ -16,4 +17,4 @@ window.require = (lib) ->
window.libraries[lib] = true window.libraries[lib] = true
r() r()
.fail (m, s) -> .fail (m, s) ->
e(m, s) e(m, s) ###

View File

@ -1,6 +1,6 @@
// Generated by CoffeeScript 1.12.7 // Generated by CoffeeScript 1.9.3
(function() { (function() {
var APIManager, BaseObject, MarkOn, var APIManager, BaseObject, MarkOn, WVNC, require,
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
hasProp = {}.hasOwnProperty; hasProp = {}.hasOwnProperty;
@ -21,7 +21,20 @@
return window.classes[n] = o; return window.classes[n] = o;
}; };
window.require = function(lib) {
/*
window.require = (lib) ->
return new Promise (r, e) ->
return r() if window.libraries[lib]
$.getScript window.myuri + lib
.done (d) ->
window.libraries[lib] = true
r()
.fail (m, s) ->
e(m, s)
*/
require = function(lib) {
return new Promise(function(r, e) { return new Promise(function(r, e) {
if (window.libraries[lib]) { if (window.libraries[lib]) {
return r(); return r();
@ -84,12 +97,18 @@
APIManager = (function(superClass) { APIManager = (function(superClass) {
extend(APIManager, superClass); extend(APIManager, superClass);
function APIManager() { function APIManager(args) {
this.args = args;
APIManager.__super__.constructor.call(this, "APIManager"); APIManager.__super__.constructor.call(this, "APIManager");
} }
APIManager.prototype.init = function(cname) { APIManager.prototype.init = function() {
console.log(cname); var cname, me;
me = this;
if (!(this.args && this.args.length > 0)) {
return console.error("No class found");
}
cname = (this.args.splice(0, 1))[0].trim();
return this.ready().then(function() { return this.ready().then(function() {
if (mobilecheck()) { if (mobilecheck()) {
mobileConsole.init(); mobileConsole.init();
@ -100,7 +119,7 @@
if (!window.classes[cname]) { if (!window.classes[cname]) {
return console.error("Cannot find class ", cname); return console.error("Cannot find class ", cname);
} }
return (new window.classes[cname]).init(); return (new window.classes[cname](me.args)).init();
})["catch"](function(m, s) { })["catch"](function(m, s) {
return console.error(m, s); return console.error(m, s);
}); });
@ -141,4 +160,88 @@
makeclass("MarkOn", MarkOn); makeclass("MarkOn", MarkOn);
WVNC = (function(superClass) {
extend(WVNC, superClass);
function WVNC(args) {
this.args = args;
WVNC.__super__.constructor.call(this, "WVNC");
this.socket = void 0;
this.uri = void 0;
if (this.args && this.args.length > 0) {
this.uri = this.args[0];
}
}
WVNC.prototype.init = function() {
var me;
me = this;
return this.ready().then(function() {
return me.openSession();
})["catch"](function(m, s) {
return console.error(m, s);
});
};
WVNC.prototype.openSession = function() {
var me;
me = this;
if (this.socket) {
this.socket.close();
}
if (!this.uri) {
return;
}
this.socket = new WebSocket(this.uri);
this.socket.binaryType = "arraybuffer";
this.socket.onopen = function() {
console.log("socket opened");
return me.initConnection();
};
this.socket.onmessage = function(e) {
return me.consume(e);
};
return this.socket.onclose = function() {
me.socket = null;
return console.log("socket closed");
};
};
WVNC.prototype.initConnection = function() {
var vncserver;
vncserver = "localhost:5901";
return this.socket.send(this.buildCommand(0x01, vncserver));
};
WVNC.prototype.buildCommand = function(hex, o) {
var cmd, data;
data = void 0;
switch (typeof o) {
case 'string':
data = (new TextEncoder()).encode(o);
break;
default:
data = o;
}
cmd = new Uint8Array(data.length + 3);
cmd[0] = hex;
cmd[2] = data.length >> 8;
cmd[1] = data.length & 0x0F;
cmd.set(data, 3);
console.log("the command is", cmd.buffer);
return cmd.buffer;
};
WVNC.prototype.consume = function(e) {
return console.log(e);
};
return WVNC;
})(window.classes.BaseObject);
WVNC.dependencies = [];
makeclass("WVNC", WVNC);
}).call(this); }).call(this);

View File

@ -3,7 +3,7 @@ BaseController:subclass("MarkOnController", {
}) })
function MarkOnController:index( ... ) function MarkOnController:index( ... )
self.template:set("jsclass", "MarkOn") self.template:set("args", "['MarkOn']")
return true return true
end end

View File

@ -0,0 +1,13 @@
BaseController:subclass("WvncController", {
registry = {}
})
function WvncController:index( ... )
self.template:set("args", "['WVNC', 'wss://localhost:9195/wvnc']")
return true
end
function WvncController:actionnotfound(...)
self.template:setView("index")
return self:index(table.unpack({...}))
end

View File

@ -24,6 +24,7 @@ local REGISTRY = {}
REGISTRY.logger = Logger:new{ levels = {INFO = true, ERROR = true, DEBUG = true}} REGISTRY.logger = Logger:new{ levels = {INFO = true, ERROR = true, DEBUG = true}}
REGISTRY.db = DBHelper:new{db="iosapps"} REGISTRY.db = DBHelper:new{db="iosapps"}
REGISTRY.layout = 'default' REGISTRY.layout = 'default'
REGISTRY.fileaccess = true
REGISTRY.db:open() REGISTRY.db:open()
local router = Router:new{registry = REGISTRY} local router = Router:new{registry = REGISTRY}

View File

@ -1,6 +1,6 @@
<?lua <?lua
local jsclass = __main__:get("jsclass") local args = __main__:get("args")
if jsclass == nil then jsclass = "" end if args == nil then args = "[]" end
?> ?>
<html> <html>
<head> <head>
@ -16,8 +16,8 @@ if jsclass == nil then jsclass = "" end
<script> <script>
$(window).on('load', function(){ $(window).on('load', function(){
window.myuri = '<?=HTTP_ROOT?>'; window.myuri = '<?=HTTP_ROOT?>';
var manager = new window.classes.APIManager(); var manager = new window.classes.APIManager(<?=args?>);
manager.init('<?=jsclass?>'); manager.init();
}); });
</script> </script>
</head> </head>

View File

@ -0,0 +1 @@
<h1>VNC screen here</h1>