Access NSLog through Cgo for iOS NetworkExtension logging

This commit is contained in:
Neil Alexander 2019-01-05 21:59:07 +00:00
parent 6bbd8c1b30
commit 87362a21e2
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944
4 changed files with 32 additions and 3 deletions

View File

@ -109,11 +109,12 @@ func (ai *awdlInterface) handler() {
timer.Reset(timerInterval) timer.Reset(timerInterval)
select { select {
case _ = <-timer.C: case _ = <-timer.C:
send([]byte{'H', 'E', 'L', 'L', 'O'}) send([]byte{})
case p := <-ai.peer.linkOut: case p := <-ai.peer.linkOut:
send(p) send(p)
continue continue
case r := <-ai.fromAWDL: case r := <-ai.fromAWDL:
//_ = append(util.GetBytes(), r...)
ai.peer.handlePacket(r) ai.peer.handlePacket(r)
ai.awdl.core.switchTable.idleIn <- ai.peer.port ai.awdl.core.switchTable.idleIn <- ai.peer.port
case <-ai.shutdown: case <-ai.shutdown:

View File

@ -24,7 +24,8 @@ import (
// therefore we use the "dummy" TUN interface instead. // therefore we use the "dummy" TUN interface instead.
func (c *Core) StartAutoconfigure() error { func (c *Core) StartAutoconfigure() error {
logger := log.New(os.Stdout, "", 0) mobilelog := MobileLogger{}
logger := log.New(mobilelog, "", 0)
nc := config.GenerateConfig(true) nc := config.GenerateConfig(true)
nc.IfName = "dummy" nc.IfName = "dummy"
nc.AdminListen = "tcp://localhost:9001" nc.AdminListen = "tcp://localhost:9001"
@ -43,7 +44,8 @@ func (c *Core) StartAutoconfigure() error {
} }
func (c *Core) StartJSON(configjson []byte) error { func (c *Core) StartJSON(configjson []byte) error {
logger := log.New(os.Stdout, "", 0) mobilelog := MobileLogger{}
logger := log.New(mobilelog, "", 0)
nc := config.GenerateConfig(false) nc := config.GenerateConfig(false)
var dat map[string]interface{} var dat map[string]interface{}
if err := hjson.Unmarshal(configjson, &dat); err != nil { if err := hjson.Unmarshal(configjson, &dat); err != nil {

View File

@ -0,0 +1,25 @@
// +build mobile,darwin
package yggdrasil
/*
#cgo CFLAGS: -x objective-c
#cgo LDFLAGS: -framework Foundation
#import <Foundation/Foundation.h>
void Log(const char *text) {
NSString *nss = [NSString stringWithUTF8String:text];
NSLog(@"%@", nss);
}
*/
import "C"
import "unsafe"
type MobileLogger struct {
}
func (nsl MobileLogger) Write(p []byte) (n int, err error) {
p = append(p, 0)
cstr := (*C.char)(unsafe.Pointer(&p[0]))
C.Log(cstr)
return len(p), nil
}

View File

@ -217,6 +217,7 @@ func (p *peer) handlePacket(packet []byte) {
default: default:
util.PutBytes(packet) util.PutBytes(packet)
} }
return
} }
// Called to handle traffic or protocolTraffic packets. // Called to handle traffic or protocolTraffic packets.