[9fans] 9p.io down?
Do we know what’s up with 9p.io, the current sources host? -- 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T1250ef82fbb8d6ed-M83a33663f0d1ddff72587843 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
Re: [9fans] Backgrounding a task
“window -m cmd” will run the command in the same namespace, forked, but in new window. “-m” is for “mount”, an alternative way of communication with the window system to /dev/wctl which is default. Yaroslav Kolomiiets 7 жовт. 2017 р. о 15:21 Chris McGee пише: Thanks for the tip! I'll give that a try. Chris З мобільного > On Oct 7, 2017, at 12:04 AM, Skip Tavakkolian > wrote: > > Spitballing here: in the new window do something like > > cat /proc/123/ns | rc > > Or first massage the ns then generate an output for rc. > >> On Fri, Oct 6, 2017, 4:34 PM Chris McGee wrote: >> Hi All, >> >> When I'm using Unix, there's a workflow that I use for long running commands >> that I'm hoping to find the equivalent in the Plan 9 way of doing things. >> >> I will occasionally run a command, realize that it will take a long time to >> complete. I don't want to kill it. I'll just Ctrl-Z and bg to put it into >> the background using the shell. It's almost as if I had run it with '&' in >> the first place. I can then run other commands in the same working >> directory, environment and shell history. >> >> Is there an equivalent to this workflow in Plan 9? >> >> I realize that the whole job control system dates back to old single session >> terminals, which isn't a problem with Rio where you can draw new windows at >> will. Initially I thought, that you just drag that window to a corner >> somewhere and let it complete. But, if I draw a new window it won't be in >> the same working directory, have the same environment and namespace. Maybe >> there is a way to create a window that inherits these from an existing >> process? >> >> Chris
[9fans] Fontsrv
A backport of fontsrv from p9p to Plan 9 is almost complete, based on an earlier port of freetype library found at mirtchovski.com. Besides TTFs, it happens to render most of the Type 1 fonts already there, enabling their use in devdraw programs. Coming soon. - Yaroslav
Re: [9fans] usb/kb: Home key produces "7"
finally got it complete: /n/sources/patch/usbkb-map 2013-08-08 19:26 GMT+03:00 Yaroslav : > It gets even weirder: another hack to enable F11/F12. > > /n/dump/2013/0808/sys/src/cmd/usb/kb/kb.c:473,479 - > /sys/src/cmd/usb/kb/kb.c:473,479 > } > > > - #define hasesc1(sc) (((sc) >= 0x47) || ((sc) == 0x38)) > + #define hasesc1(sc) (((sc) >= 0x47 && (sc) < 0x57) || ((sc) > 0x58) > || ((sc) == 0x38)) > > static void > putmod(KDev *f, uchar mods, uchar omods, uchar mask, uchar esc, uchar sc) > > 2013/3/1 Yaroslav : >> >>> thanks. that one had been bugging me. looks like it works here. >> >> >> /n/sources/patch/usb-khome >> > > -- > - Yaroslav -- - Yaroslav
Re: [9fans] device names in venti conf
the proposal submitted: /n/sources/patch/venti-cfgrelpath 2013-09-13 14:57 GMT+03:00 yaroslav : >> Can we avoid explicit device names in venti conf? Changes in device >> names on new hardware cause unnecessary delays during FS recovery. > > One of available options is to modify venti so it prepends the > non-rooted partitions with the same prefix as the config file has. > /dev/sdC0/arenas may then have a config wired in with entries > like"isect isect". -- - Yaroslav
Re: [9fans] u9fs(4) misuses Fcall.afid in its p9any authentication module
> > /sys/src/cmd/unix/u9fs/authp9any.c > > authp9any.c.orig:369,375 - /n/sources/patch/u9fs-afid/authp9any.c:369,378 > > fprint(2, "p9anyattach: afid %d state %d\n", rx->afid, sp->state); > > if (sp->state == Established && strcmp(rx->uname, sp->uname) == 0 > > && strcmp(rx->aname, sp->aname) == 0) > > + { > > + rx->uname = sp->t.suid; /* will be valid until afid is clunked */ > > return nil; > > + } > > return "authentication failed"; > > } > > without commont on correctness, braces go on the > line on which the if condition ends. > > - erik > The patch has been updated. BTW, this change was after http://9fans.net/archive/2011/10/157 which I hadn't then submitted; this time it slipped through. It worth's to stay though, IMO.
[9fans] u9fs(4) misuses Fcall.afid in its p9any authentication module
U9fs(4) misuses Fcall.afid in its p9any authentication module. The afid field of Fcall structure is only valid with Tauth or Tattach. Tread, Twrite, Tclunk should use rx->fid instead. It's been lucky so far to get the job done because rx->afid survives from previous Tauth/Tattach. The issue pops up when several authentications happen concurrently. Test case: u9fs = 'host with u9fs on tcp!*!564' 9fs $u9fs; for(i in 1 2 3 4 5 6 7 8){ 9fs $u9fs & }; wait Should: no errors Should not: mount failed: authentication failed afid, sp->state); if (sp->state == Established && strcmp(rx->uname, sp->uname) == 0 && strcmp(rx->aname, sp->aname) == 0) + { + rx->uname = sp->t.suid; /* will be valid until afid is clunked */ return nil; + } return "authentication failed"; } authp9any.c.orig:392,398 - /n/sources/patch/u9fs-afid/authp9any.c:395,401 char *ep; Fid *f; - f = oldauthfid(rx->afid, (void **)&sp, &ep); + f = oldauthfid(rx->fid, (void **)&sp, &ep); if (f == nil) return ep; if (chatty9p) authp9any.c.orig:437,443 - /n/sources/patch/u9fs-afid/authp9any.c:440,446 Fid *f; - f = oldauthfid(rx->afid, (void **)&sp, &ep); + f = oldauthfid(rx->fid, (void **)&sp, &ep); if (f == nil) return ep; if (chatty9p) authp9any.c.orig:515,521 - /n/sources/patch/u9fs-afid/authp9any.c:518,524 AuthSession *sp; char *ep; - f = oldauthfid(rx->afid, (void **)&sp, &ep); + f = oldauthfid(rx->fid, (void **)&sp, &ep); if (f == nil) return ep; if (chatty9p)
Re: [9fans] device names in venti conf
> Can we avoid explicit device names in venti conf? Changes in device > names on new hardware cause unnecessary delays during FS recovery. One of available options is to modify venti so it prepends the non-rooted partitions with the same prefix as the config file has. /dev/sdC0/arenas may then have a config wired in with entries like"isect isect". /n/sources/plan9/sys/src/cmd/venti/srv/config.c:44,49 - /sys/src/cmd/venti/srv/config.c:44,55 return 0; } + static int + isrooted(char* s) + { + return *s == '/' || *s == '#'; + } + /* * configs: *| configs config /n/sources/plan9/sys/src/cmd/venti/srv/config.c:69,75 - /sys/src/cmd/venti/srv/config.c:75,81 ArenaPart **av; ISect **sv; IFile f; - char *s, *line, *flds[MaxArgs + 1]; + char *s, *p, *q, *line, *flds[MaxArgs + 1]; int i, ok; if(readifile(&f, file) < 0) /n/sources/plan9/sys/src/cmd/venti/srv/config.c:78,83 - /sys/src/cmd/venti/srv/config.c:84,98 config->mem = Unspecified; ok = -1; line = nil; + + /* conf basename as default prefix for partitions */ + p = estrdup(file); + s = strrchr(p, '/'); + if(s) + *s = 0; + else + *p = 0; + for(;;){ s = ifileline(&f); if(s == nil){ /n/sources/plan9/sys/src/cmd/venti/srv/config.c:92,98 - /sys/src/cmd/venti/srv/config.c:107,118 sv[i] = config->sects[i]; free(config->sects); config->sects = sv; - config->sects[config->nsects] = configisect(flds[1]); + if(!isrooted(flds[1])){ + q = smprint("%s/%s", p, flds[1]); + config->sects[config->nsects] = configisect(q); + free(q); + }else + config->sects[config->nsects] = configisect(flds[1]); if(config->sects[config->nsects] == nil) break; config->nsects++; /n/sources/plan9/sys/src/cmd/venti/srv/config.c:102,108 - /sys/src/cmd/venti/srv/config.c:122,133 av[i] = config->aparts[i]; free(config->aparts); config->aparts = av; - config->aparts[config->naparts] = configarenas(flds[1]); + if(!isrooted(flds[1])){ + q = smprint("%s/%s", p, flds[1]); + config->aparts[config->naparts] = configarenas(q); + free(q); + }else + config->aparts[config->naparts] = configarenas(flds[1]); if(config->aparts[config->naparts] == nil) break; config->naparts++; /n/sources/plan9/sys/src/cmd/venti/srv/config.c:111,117 - /sys/src/cmd/venti/srv/config.c:136,148 seterr(EAdmin, "duplicate bloom lines in configuration file %s", file); break; } - if((config->bloom = configbloom(flds[1])) == nil) + if(!isrooted(flds[1])){ + q = smprint("%s/%s", p, flds[1]); + config->bloom = configbloom(q); + free(q); + }else + config->bloom = configbloom(flds[1]); + if(config->bloom == nil) break; }else if(i == 2 && strcmp(flds[0], "index") == 0){ if(nameok(flds[1]) < 0){ /n/sources/plan9/sys/src/cmd/venti/srv/config.c:183,188 - /sys/src/cmd/venti/srv/config.c:214,220 free(line); line = nil; } + free(p); free(line); freeifile(&f); if(ok < 0){
Re: [9fans] xen3: fresh build 9xenpccpuf dies on boot
Thanks, Erik, your guess is absolutely right... Richard, do you mind updating /n/sources/xen/xen3/9/xen3/main.c? term% diff -c /n/sources/xen/xen3/9/xen3/main.c /n/sources/contrib/yk/xen3/main.c /n/sources/xen/xen3/9/xen3/main.c:8,13 - /n/sources/contrib/yk/xen3/main.c:8,14 #include "init.h" #include "pool.h" #include "reboot.h" + #include Mach *m; /n/sources/xen/xen3/9/xen3/main.c:15,20 - /n/sources/contrib/yk/xen3/main.c:16,26 #define BOOTARGSLEN (sizeof xenstart->cmd_line) #define MAXCONF 64 + enum { + /* space for syscall args, return PC, top-of-stack struct */ + Ustkheadroom = sizeof(Sargs) + sizeof(uintptr) + sizeof(Tos), + }; + char bootdisk[KNAMELEN]; Conf conf; char *confname[MAXCONF]; /n/sources/xen/xen3/9/xen3/main.c:270,276 - /n/sources/contrib/yk/xen3/main.c:276,282 uchar *av[32]; uchar **lsp; - sp = (uchar*)base + BY2PG - MAXSYSARG*BY2WD; + sp = (uchar*)base + BY2PG - Ustkheadroom; ac = 0; av[ac++] = pusharg("/386/9dos"); 2013/9/12 erik quanstrom : > On Thu Sep 12 09:49:19 EDT 2013, yari...@gmail.com wrote: >> > The crash seems to be in init, not the kernel. Are you sure >> > your file system image is good? >> >> it doesn't get far enough for "root from:", so it seems to fail >> somewhere in the initcode blob > > this may be related to the change put in for the routerboard. > > it increased the size of Tos, and thus shifted everything around > on the stack. but the old pc kernel didn't account for this, and > 386 kernels failed with bad arg in syscall. this never affected the > pae kernel, or the other architectures. here's the fix as it went > into 9atom. > > ; 9fs atom > ; cd /n/atom/plan9/sys/src/9/pc > ; history -D main.c > Aug 3 15:30:45 EDT 2013 main.c 16439 [quanstro] > Aug 3 15:30:45 EDT 2013 /n/atomdump/2013/0912/plan9/sys/src/9/pc/main.c > 16439 [quanstro] > 10a11 >> #include > 25a27,31 >> enum { >> /* space for syscall args, return PC, top-of-stack struct */ >> Ustkheadroom= sizeof(Sargs) + sizeof(uintptr) + sizeof(Tos), >> }; >> > 294c300 > < sp = (uchar*)base + BY2PG - MAXSYSARG*BY2WD; > --- >> sp = (uchar*)base + BY2PG - Ustkheadroom; > > - erik -- - Yaroslav
Re: [9fans] xen3: fresh build 9xenpccpuf dies on boot
> The crash seems to be in init, not the kernel. Are you sure > your file system image is good? it doesn't get far enough for "root from:", so it seems to fail somewhere in the initcode blob
[9fans] xen3: fresh build 9xenpccpuf dies on boot
Re-build of 9xenpccpuf, the PV Xen guest kernel built from sources at /n/sources/xen/xen3/9), with latest changes in sys/src/9/port/, sys/src/libc/ and others - resulted in non-functional kernel: it dies on boot with attached diagnostics. I haven't looked further yet. <>
[9fans] device names in venti conf
Can we avoid explicit device names in venti conf? Changes in device names on new hardware cause unnecessary delays during FS recovery.
Re: [9fans] usb/kb: Home key produces "7"
It gets even weirder: another hack to enable F11/F12. /n/dump/2013/0808/sys/src/cmd/usb/kb/kb.c:473,479 - /sys/src/cmd/usb/kb/kb.c:473,479 } - #define hasesc1(sc) (((sc) >= 0x47) || ((sc) == 0x38)) + #define hasesc1(sc) (((sc) >= 0x47 && (sc) < 0x57) || ((sc) > 0x58) || ((sc) == 0x38)) static void putmod(KDev *f, uchar mods, uchar omods, uchar mask, uchar esc, uchar sc) 2013/3/1 Yaroslav : > >> thanks. that one had been bugging me. looks like it works here. > > > /n/sources/patch/usb-khome > -- - Yaroslav
Re: [9fans] mallocz in APE
>> Replacing _MALLOCZ back with mallocz within APE realm seems to me a >> better option to consider. > > I don't think this is better. APE generally tries very hard to be compliant > to the spirit of ANSI (or POSIX with _POSIX_EXTENSION defined), this > includes not poluting the namespace with plan9isms where possible. > > Having said this what about setmalloctag() getcallerpc(), etc etc. It is internal to the libraries and is not exposed to the APE apps, right?
[9fans] mallocz in APE
APE programs which require libmp fail to link due to unresolved mallocz symbol. Easily solved by providing a local implementation, but why: it's already there - in an alternative form though: cpu% nm /386/lib/ape/libap.a | grep -i mallocz 9mallocz.8: T _MALLOCZ 9mallocz.8: U malloc 9mallocz.8: U memset I don't really see the reasons for this rename, yet other APE libs like libsec follow it: cpu% nm /386/lib/ape/libsec.a | grep -i mallocz sha2_64.8: U _MALLOCZ sha2_128.8: U _MALLOCZ rsaalloc.8: U _MALLOCZ egalloc.8: U _MALLOCZ dsaalloc.8: U _MALLOCZ And libmp does not: cpu% nm /386/lib/ape/libmp.a | grep -i mallocz mpaux.8: U mallocz mpmul.8: U mallocz Here's why: cpu% grep -ni mallocz /sys/src/ape/lib/*/*.h /sys/src/ape/lib/*/*/*.h /sys/src/ape/lib/9/libc.h:105: extern void *_MALLOCZ(int, int); /sys/src/ape/lib/9/libc.h:132: #define mallocz _MALLOCZ /sys/src/ape/lib/draw/libc.h:100: externvoid *_MALLOCZ(int, int); /sys/src/ape/lib/draw/libc.h:127: #define mallocz _MALLOCZ /sys/src/ape/lib/mp/port/libc.h:14: extern void* mallocz(ulong, int); /sys/src/ape/lib/sec/port/libc.h:105: externvoid *_MALLOCZ(int, int); /sys/src/ape/lib/sec/port/libc.h:132: #define mallocz _MALLOCZ Note the libmp's one standing out. A quick fix is to bring up mallocz bits in /sys/src/ape/lib/mp/port/libc.h into agreement with the rest. Replacing _MALLOCZ back with mallocz within APE realm seems to me a better option to consider. Comments are welcome.
[9fans] lpdaemon
in /sys/src/cmd/lp/lpdaemon.c:297,310 These info.host[strlen(info.host)] = '\0'; … info.user[strlen(info.user)] = '\0'; look nonsence as zeros are placed exactly where they already are. Should read as in following instead: info.host[NAMELEN] = '\0'; … info.user[NAMELEN] = '\0'; shoudn't it?
Re: [9fans] vncv sw cursor trail
> by the way, hz should have nothing to do with it since i'm > using cinap's technique of a mouse process that redraws the > cursor when asked, or every 20ms, whichever comes first This might as well explain the fact 9atom users don't experience the problem: local cursor is redrawn sooner than bitmap update for remote cursor arrives. The problem also disappears when a severe latency induced on the path to vnc server (sshnet through a distant machine or so). -- - Yaroslav
[9fans] vncv sw cursor trail
When using vncv on a terminal with software cursor (vesa, rpi) the mouse cursor leaves a trail. This seem to be caused by the fact that vncv loads picture updates with loadimage(2) directly to screen. Loading to an offscreen image followed by a draw(2) to screen removes the artifact: /n/dump/2013/0507/sys/src/cmd/vnc/draw.c:106,111 - /sys/src/cmd/vnc/draw.c:106,112 static void updatescreen(Rectangle r) { + Image* img; int b, bb; lockdisplay(display); /n/dump/2013/0507/sys/src/cmd/vnc/draw.c:120,129 - /sys/src/cmd/vnc/draw.c:121,135 /* * assume load image fails only because of resize */ + img = allocimage(display, r, screen->chan, 0, DNofill); + if(img == nil) + sysfatal("updatescreen: %r"); b = Dx(r) * pixb * Dy(r); - bb = loadimage(screen, rectaddpt(r, screen->r.min), pixbuf, b); + bb = loadimage(img, r, pixbuf, b); if(bb != b && verbose) fprint(2, "loadimage %d on %R for %R returned %d: %r\n", b, rectaddpt(r, screen->r.min), screen->r, bb); + draw(screen, rectaddpt(r, screen->r.min), img, nil, r.min); + freeimage(img); unlockdisplay(display); } Submitted as /n/sources/patch/vncv-curtrail -- - Yaroslav
Re: [9fans] [GSOC 2013] Implement plan9 commands in Go, Goblin
2013/5/1 Steve Simon : > There has been a win32.c in the labs distribution of rc(1) for years > but it has never (to my knowledge) worked. > > I did a major overhall of the win32 port and back ports of a few > plan9 tools to posix (I know, I know), and packaged the whole thing up. sounds like it deserves to become submitted as a patch. -- - Yaroslav
Re: [9fans] meet native port of rdesktop 1.6
moved; install with fgb's contrib (386+arm): contrib/install yk/rd 2013/2/8 Yaroslav : > /n/sources/contrib/yk/rdesktop > > It supports RGB16 server output only and doesn't implement graphic orders > beyond bitmap update. Tested against XP and servers 2003, 2008, 2012. > > -- > - Yaroslav Kolomiyets -- - Yaroslav
Re: [9fans] German USB keyboard on Raspberry Pi
2013/4/25 Holger Sebert : > If not, how do I recompile and install the kbd-module on the > Raspberry Pi? I changed kbd.c for testing purposes and > executed "mk install" in the directory /sys/src/9/. Although > the build succeeded the changes did not seem to be incorporated. mk install usually installs the kernel to /$objtype, but rpi boots from dos partition of an SD card, therefore you also need to copy it over there: ; dosmnt 1 /n/dos ; cp /arm/9pi /n/dos/ ; unmount /n/dos # or simply close the window -- - Yaroslav
[9fans] fresh python port?
There is porting of a recent 2.x python going on, isn't it? How is it going?
Re: [9fans] Go Plan9 ARM Dreamplug
2013/4/15 Christopher Nielsen > > A small caveat, I had to use mercurial on x86 (my cpufsauth server is an x86 > vmware instance), since there wasn't an arm binary. Other than that, it was > all pretty painless. One may '9fs sources && fcp /n/sources/contrib/yk/5.python /arm/bin/python' to add the ARM binary (without VFP instructions). -- - Yaroslav
Re: [9fans] Fsctotum per user instances?
Not exactly. Please refer to /sys/doc/auth.ps | http://plan9.bell-labs.com/sys/doc/auth.html for overview of the architecture. > So the incoming authentication is handled by the cpu owner factotum? That > means the authentication information is held by the cpu owner factotum and > the user factotum just handles the users keys? And the user factotum is run > after authentication. >
Re: [9fans] Unexpected complaint
works as expected if given "%llud" format. 2013/4/2 > The following code triggers a warning: > > #include > #include > > int main() { > unsigned long long val = 0; > > print("VAL: %llu\n", val); > return 0; > } > > warning: llu.c:7 format mismatch llu > UVLONG, arg 2 > > and produces the damnedest output: > > VAL: % > %(not terminated by a newline). > > Something's not right, anybody know what the cause is? And maybe the > cure? > > ++L > > > -- - Yaroslav
Re: [9fans] Detecting keyup/keydown
no, cons(3) interface abstracts away from key strokes and yields complete Runes.
Re: [9fans] 9FRONT ANNOUNCES INTEL WIFI DRIVER, WPA/WPA2 SUPPORT
Looking forward to a backport of this to the stock Plan 9.
Re: [9fans] cs syntax
/sys/src/cmd/ndb/cs.c:/^rwrite/;/^}/ looks like a rather complete reference ☺
Re: [9fans] Git (Was: Acme: indicator of running process)
> is it too much noise to ask about p9p Acme on this mailing list? Should be ok for anything with a "9" in its name
Re: [9fans] usb/kb: Home key produces "7"
> thanks. that one had been bugging me. looks like it works here. > /n/sources/patch/usb-khome
[9fans] usb/kb: Home key produces "7"
The "Home" key produces rune "7" on certain USB keyboard. The fix is: /n/sources/plan9/sys/src/cmd/usb/kb/kb.c:473,479 - /sys/src/cmd/usb/kb/kb.c:473,479 } - #define hasesc1(sc) (((sc) > 0x47) || ((sc) == 0x38)) + #define hasesc1(sc) (((sc) >= 0x47) || ((sc) == 0x38)) static void putmod(KDev *f, uchar mods, uchar omods, uchar mask, uchar esc, uchar sc)
Re: [9fans] meet native port of rdesktop 1.6
now works on arm (tested on raspberry pi) 2013/2/9 > excellent! :) > > -- > cinap > > -- - Yaroslav
Re: [9fans] APE select() and awkward Python subprocess PIPEfitting
2013/2/26 Jeff Sickel > 've come to the conclusion that the code that causes error is intentional We're facing problems in ceratin python apps too[1]. We used to use X11/equis mainly for rdesktop until a native port[2] became available. Does you change break X11/equis if relinked? - Yaroslav _ [1] http://9fans.net/archive/2013/01/95 [2] http://9fans.net/archive/2013/02/58
Re: [9fans] xor draw
2013/2/14 erik quanstrom > On Thu Feb 14 13:52:09 EST 2013, yari...@gmail.com wrote: > > > we can't do XOR drawing with draw(2) like with bitblt, can we? > > if there's a trivial α channel, it's possible. otherwise one > runs the risk of α multiplication. > > No alpha there - I'd like to learn the trick please.
[9fans] xor draw
we can't do XOR drawing with draw(2) like with bitblt, can we? -- - Yaroslav
Re: [9fans] tell if our window has been hidden
did just that, thanks. 2013/2/12 Federico G. Benavento > you can read from /dev/wctl and check wether the window > is "visible" or "hidden", see rio(4). > > On Feb 11, 2013, at 7:32 AM, Yaroslav wrote: > > > Can we tell somehow from eresized() that our window has been hidden or > unhidden? > > -- > > - Yaroslav > > --- > Federico G. Benavento > benave...@gmail.com > > > > > -- - Yaroslav
[9fans] tell if our window has been hidden
Can we tell somehow from eresized() that our window has been hidden or unhidden? -- - Yaroslav
[9fans] meet native port of rdesktop 1.6
/n/sources/contrib/yk/rdesktop It supports RGB16 server output only and doesn't implement graphic orders beyond bitmap update. Tested against XP and servers 2003, 2008, 2012. -- - Yaroslav Kolomiyets
Re: [9fans] APE libsec
2013/2/5 erik quanstrom > looks good, but i'd do libsec at the same time. > unless you know of a compelling reason for these > to support a different set of algorithms? > Agree. /n/sources/patch/x509-oids
Re: [9fans] APE libsec
Could you please include following changes to /sys/src/ape/lib/sec/port/x509-ape.c: this is for X509toRSApub(2) to accept some ms-generated certs: /n/sources/plan9/sys/src/ape/lib/sec/port/x509-ape.c:1583,1588 - /sys/src/ape/lib/sec/port/x509-ape.c:1583,1590 ALG_sha1WithRSAEncryption, ALG_sha1WithRSAEncryptionOiw, ALG_md5, + ALG_sha256WithRSAEncryption, + ALG_shaWithRSASignatureOiw, NUMALGS }; typedef struct Ints7 { /n/sources/plan9/sys/src/ape/lib/sec/port/x509-ape.c:1596,1601 - /sys/src/ape/lib/sec/port/x509-ape.c:1598,1605 static Ints7 oid_sha1WithRSAEncryption ={7, 1, 2, 840, 113549, 1, 1, 5 }; static Ints7 oid_sha1WithRSAEncryptionOiw ={6, 1, 3, 14, 3, 2, 29 }; static Ints7 oid_md5 ={6, 1, 2, 840, 113549, 2, 5, 0 }; + static Ints7 oid_sha256WithRSAEncryption ={7, 1, 2, 840, 113549, 1, 1, 11 }; + static Ints7 oid_shaWithRSASignatureOiw ={6, 1, 3, 14, 3, 2, 15 }; static Ints *alg_oid_tab[NUMALGS+1] = { (Ints*)&oid_rsaEncryption, (Ints*)&oid_md2WithRSAEncryption, /n/sources/plan9/sys/src/ape/lib/sec/port/x509-ape.c:1604,1609 - /sys/src/ape/lib/sec/port/x509-ape.c:1608,1615 (Ints*)&oid_sha1WithRSAEncryption, (Ints*)&oid_sha1WithRSAEncryptionOiw, (Ints*)&oid_md5, + (Ints*)&oid_sha256WithRSAEncryption, + (Ints*)&oid_shaWithRSASignatureOiw, nil }; static DigestFun digestalg[NUMALGS+1] = { md5, md5, md5, md5, sha1, sha1, md5, nil }; #include #include #include #include typedef DigestState*(*DigestFun)(uchar*,ulong,uchar*,DigestState*); /* ANSI offsetof, backwards. */ #define OFFSETOF(a, b) offsetof(b, a) /*=*/ /* general ASN1 declarations and parsing * * For now, this is used only for extracting the key from an * X509 certificate, so the entire collection is hidden. But * someday we should probably make the functions visible and * give them their own man page. */ typedef struct Elem Elem; typedef struct Tag Tag; typedef struct Value Value; typedef struct Bytes Bytes; typedef struct Ints Ints; typedef struct Bits Bits; typedef struct Elist Elist; /* tag classes */ #define Universal 0 #define Context 0x80 /* universal tags */ #define BOOLEAN 1 #define INTEGER 2 #define BIT_STRING 3 #define OCTET_STRING 4 #define NULLTAG 5 #define OBJECT_ID 6 #define ObjectDescriptor 7 #define EXTERNAL 8 #define REAL 9 #define ENUMERATED 10 #define EMBEDDED_PDV 11 #define UTF8String 12 #define SEQUENCE 16 /* also SEQUENCE OF */ #define SETOF 17/* also SETOF OF */ #define NumericString 18 #define PrintableString 19 #define TeletexString 20 #define VideotexString 21 #define IA5String 22 #define UTCTime 23 #define GeneralizedTime 24 #define GraphicString 25 #define VisibleString 26 #define GeneralString 27 #define UniversalString 28 #define BMPString 30 struct Bytes { int len; uchar data[1]; }; struct Ints { int len; int data[1]; }; struct Bits { int len;/* number of bytes */ int unusedbits; /* unused bits in last byte */ uchar data[1];/* most-significant bit first */ }; struct Tag { int class; int num; }; enum { VBool, VInt, VOctets, VBigInt, VReal, VOther, VBitString, VNull, VEOC, VObjId, VString, VSeq, VSet }; struct Value { int tag;/* VBool, etc. */ union { int boolval; int intval; Bytes* octetsval; Bytes* bigintval; Bytes* realval;/* undecoded; hardly ever used */ Bytes* otherval; Bits* bitstringval; Ints* objidval; char* stringval; Elist* seqval; Elist* setval; } u; /* (Don't use anonymous unions, for ease of porting) */ }; struct Elem { Tag tag; Value val; }; struct Elist { Elist* tl; Elemhd; }; /* decoding errors */ enum { ASN_OK, ASN_ESHORT, ASN_ETOOBIG, ASN_EVALLEN, ASN_ECONSTR, ASN_EPRIM, ASN_EINVAL, ASN_EUNIMPL }; /* here are the functions to consider making extern someday */ static Bytes* newbytes(int len); static Bytes* makebytes(uchar* buf, int len); static void freebytes(Bytes* b); static Bytes* catbytes(Bytes* b1, Bytes* b2); static Ints*newints(int len); static Ints*makeints(int* buf, int len); static void freeints(Ints* b); static Bits*newbits(int len); static Bits*makebits(uchar* buf, int len, int unusedbits); static void freebits(Bits* b); static Elist* mkel(Elem e, Elist* tail); static void freeelist(Elist* el); static int elistlen(Elist* el); static int is_seq(Elem* pe, Elist** pseq); static int is_set(Elem* pe, Elist** pset); static int is_int(Elem* pe, int* pint
Re: [9fans] APE libsec
Aha! This ape/mp.h references the native lib not ape one. Applying the fix below and recompiling ape/lib/mp and ape/lib/sec eliminates the reference to /386/lib/libc.a, leaving just a few of unresolved references: pcc -o 8.out bitmap.8 cache.8 channels.8 cliprdr.8 ewmhints.8 frpc.8 iso.8 licence.8 mcs.8 mppc.8 orders.8 pstcache.8 rdesktop.8 rdp.8 rdp5.8 seamless.8 secure.8 tcp.8 snarf.8 xkeymap.8 xwin.8 mpkaratsuba: undefined: mallocz _PIPE: argv0: not defined pcc: 8l: 8l 97689: error The mp.h fix: /n/sources/plan9/sys/include/ape/mp.h:5,12 - /sys/include/ape/mp.h:5,12 #ifndef __LIBMP_H_ #define __LIBMP_H_ - #pragma src "/sys/src/libmp" - #pragma lib "libmp.a" + #pragma src "/sys/src/ape/lib/mp" + #pragma lib "/$M/lib/ape/libmp.a" typedef unsigned int mpdigit; /* from /$objtype/include/u.h */ 2013/2/4 Yaroslav > Hi, > > I've noticed there are libsec/libmp became available for APE programs, and > dove into replacing OpenSSL calls with libsec equivalents. However, there > are still a reference to the native libc lurks somewhere in the ports as > the linker reports conflicts like these: > > checkenv: incompatible type signatures > a9aa533a(/386/lib/ape/libap.a(freopen)) and > aebfd74f(/386/lib/libc.a(calloc)) for open > ppanic: incompatible type signatures > 4dcf09c4(/386/lib/ape/libap.a(_IO_putc)) and > 55e8553c(/386/lib/libc.a(calloc)) for write > malloc: /386/lib/libc.a(calloc): redefinition: malloc > (1070) TEXT malloc+0(SB),$24 > free: /386/lib/libc.a(calloc): redefinition: free > ... > > Could someone suggest a method for tracking down the library/object file > which contains the loader instruction to load /386/lib/libc.a? > > Thanks. > -- > - Yaroslav > -- - Yaroslav
[9fans] APE libsec
Hi, I've noticed there are libsec/libmp became available for APE programs, and dove into replacing OpenSSL calls with libsec equivalents. However, there are still a reference to the native libc lurks somewhere in the ports as the linker reports conflicts like these: checkenv: incompatible type signatures a9aa533a(/386/lib/ape/libap.a(freopen)) and aebfd74f(/386/lib/libc.a(calloc)) for open ppanic: incompatible type signatures 4dcf09c4(/386/lib/ape/libap.a(_IO_putc)) and 55e8553c(/386/lib/libc.a(calloc)) for write malloc: /386/lib/libc.a(calloc): redefinition: malloc (1070) TEXT malloc+0(SB),$24 free: /386/lib/libc.a(calloc): redefinition: free ... Could someone suggest a method for tracking down the library/object file which contains the loader instruction to load /386/lib/libc.a? Thanks. -- - Yaroslav
[9fans] ape: getsockname: wrong byte order in sin_port
APE's getsockname() returns port with bytes swapped (on 386). Fix: /n/dump/2013/0108/sys/src/ape/lib/bsd/_sock_ingetaddr.c:35,41 - /sys/src/ape/lib/bsd/_sock_ingetaddr.c:35,41 if(p){ *p++ = 0; ip->sin_family = AF_INET; - ip->sin_port = atoi(p); + ip->sin_port = htons(atoi(p)); ip->sin_addr.s_addr = inet_addr(name); if(alen) *alen = sizeof(struct sockaddr_in); Python needs to be relinked. -- - Yaroslav
Re: [9fans] Mercurial and Plan 9
We have problems with threading support in the mentioned APE python port (e.g. hg serve): they complain about invalid file descriptors which may be due to non-reentrant implementation of APE interfaces. I didn't look any deeper though. 2013/1/5 Federico G. Benavento : > Hola Steven, > > thanks for getting mercurial support for Plan 9 upstream, > I did the APE port of python (based on the native one) years ago > because nothing worked with the "native" one, I wanted to get X > running then it needed openssl or some socket api that wasn't > implemented in the Plan 9 emulation of it (written in python as > charles mentions), because native python didn't have sockets > and things like non-blocking IO provided by APE's select. > > basically you're left out with the Language but without significant > parts of the runtime when you use a native port. > > thanks again > > > On Jan 4, 2013, at 8:10 PM, Steven Stallion wrote: > >> Hi Jeff, >> >> Mercurial has been taken care of! I more or less track the latest stable >> (stallion/mercurial). The existing Python port is sufficient for Mercurial, >> though having a native Python port would be great. I've added Plan 9 support >> upstream in the Mercurial repository, so future builds are very simple. In >> fact, it's even documented: >> http://mercurial.selenic.com/wiki/Plan9FromBellLabs >> >> Cheers, >> >> Steve >> >> On Fri, Jan 4, 2013 at 1:56 PM, Jeff Sickel wrote: >> Has anyone completed an APE lib sec yet? >> >> I'm starting to roll an ape build of libsec in as it's needed for >> a new Python 2.7.3+ port of Python. I'd gladly take someone else's >> mkfile rework to save some time. Libsec is needed to implement a >> new _hashlib module, one that doesn't require OpenSSL among others. >> >> The new Python release&build will be pushed out once I clean up >> a few more details like getting new builds of Mercurial working. >> > > --- > Federico G. Benavento > benave...@gmail.com > > > > -- - Yaroslav
[9fans] bug in topng(1)
There's a bug in topng(1) which under certain circumstances may result in broken output image. When such an image then is fed to png(1) diagnostics like the following are produced: term% png /tmp/1.png png: unknown filtering scheme 49 (The filtering scheme number may differ.) This happens when at the beginning of an input line (z->x == 0) there are only room for exactly one pixel in output buffer (b+pixwids == e), at /sys/src/cmd/jpg/writepng.c:/^zread/+/while/. Since every scan line should start with a filter algorithm ID it consumes a byte in the buffer, leaving no room for the pixel. The "pixels" variable turns zero, no pixels are emitted, yet the alg byte slips out. During next run of zread() with empty buffer, the alg byte is emitted again, causing permanent skew of output bytes. The proposed fix is to modify the loop condition so the loop won't proceed if there are not enough room for at least one pixel plus a byte for the filter alg ID. Submitted /n/sources/patch/topng-extrabyte/. - yk
Re: [9fans] p9p backspace/delete in osx
just to make it clear: is this in 9term? 2012/9/25 andrey mirtchovski : >> obviously not necessary when using a full-size keyboard, and there is a >> real delete on those keyboards. > > none of these works with an rc shell. all i see is: > > ^[[3~ > > printed with each method. repeatedly as i bash the keyboard with my stubby > fingers :) -- - Yaroslav
Re: [9fans] p9p srv files on plan 9
you may mount it on terminal (9pfuse or so) then access in drawterm under /mnt/term. 2012/9/15 Anthony Sorace : > i'm certain i've seen this, but i can't reproduce it: is there a > method for getting the srv files created by p9p in $namespace > mounted under plan9? attempting to do so under drawterm > objects "Operation not supported on socket".
[9fans] (no subject)
subect: update:V: in system mkfiles Many system mkfiles have targets like this: update:V: update $UPDATEFLAGS $UPDATE These're no program named 'update' however — besides pc/update which doesn't seem to apply here. Could somebody please advise what these are meant for? Is it still relevant? Thanks. - yk
[9fans] syscall tracing: errstr
Anybody else noticed ratrace reporting an older errstr? 209051 mv Wstat 8cfe 0xdfffcef4/"bz" 0xc708 51 = -1 './bw' file does not exist 1345738572648442848 1345738572649648848 I double checked: the wstat definitely returns Eperm on the wire: Twstat tag 15 fid 1352 stat 'bw' '' '' '' q ( 4294967295 dalA) m 0377 at -1 mt -1 l -1 t 65535 d -1 Rerror tag 15 ename permission denied Looking at /n/sources/plan9/sys/src/9/pc/trap.c:729,731 -- maybe sysretfmt() should take up->syserrstr not up->errstr? -- Forwarded message -- From: Yaroslav Date: 2012/8/23 Subject: Re: [9fans] APE rename: wstat for 'none' To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> > are you sure? > > ; touch bz > ; ratrace -c mv bz bw >[2=1]| grep -v 'Stat|Brk' you forgot auth/none... ; ratrace -c auth/none mv bz bw >[2=1]| grep -v ' none |Stat|Brk' 209051 mv Wstat 8cfe 0xdfffcef4/"bz" 0xc708 51 = -1 './bw' file does not exist 1345738572648442848 1345738572649648848 209051 mv Open 3e05 0xdfffcef4/"bz" 0x0 = 3 "" 1345738572649753608 1345738572650669632 209051 mv Create 3e0d 0xdfffdef4/"./bw" 0x1 0x1b6 = 4 "" 1345738572651647673 1345738572653507377 209051 mv Pread 8d16 3 0xdfffae8c 8192 -1/"" 8192 -1 = 0 file does not exist 1345738572653614652 1345738572654039559 209051 mv Close 3e15 3 = 0 "" 1345738572654426753 1345738572654851661 209051 mv Fwstat 8d1e 4 0xc708 49 = -1 './bw' file does not exist 1345738572655401443 1345738572655739187 209051 mv Remove 3dfd 0xdfffcef4/"bz" = 0 "" 1345738572656063524 1345738572656922558 209051 mv Close 3e15 4 = 0 "" 1345738572657094365 1345738572657555310 209051 mv Open 3e05 0xbbe4/"#c/pid" 0x0 = 3 "" 1345738572657805897 1345738572657894733 209051 mv Pread 8d16 3 0xdfffeefc 20 -1 0xdfffeefc/".209051." 20 -1 = 12 "" 1345738572658193929 1345738572658201471 209051 mv Close 3e15 3 = 0 "" 1345738572658351488 1345738572658359031 209051 mv Exits 3e1d 0/"" -- - Yaroslav
Re: [9fans] APE rename: wstat for 'none'
> oh, i thought you were comparing system/library calls, not library function > vs program. i don't understand that comparison. it so happens that mv is a program with own idea how to do renames, and there are no other obvious subject to compare with.
Re: [9fans] APE rename: wstat for 'none'
> no, i didn't. ratrace doesn't run if you're none. try 'ratrace -c auth/none cmd ...' while not being none and ignore everything preceding Exec "cmd". > as i understand it, your claim is that mv works as none but ape/rename > does not and this is because ape/rename uses wstat. both use wstat or copying; what's different is how they choose what to use. mv falls back to copying if wstat fails; ape/rename does not.
Re: [9fans] APE rename: wstat for 'none'
> are you sure? > > ; touch bz > ; ratrace -c mv bz bw >[2=1]| grep -v 'Stat|Brk' you forgot auth/none... ; ratrace -c auth/none mv bz bw >[2=1]| grep -v ' none |Stat|Brk' 209051 mv Wstat 8cfe 0xdfffcef4/"bz" 0xc708 51 = -1 './bw' file does not exist 1345738572648442848 1345738572649648848 209051 mv Open 3e05 0xdfffcef4/"bz" 0x0 = 3 "" 1345738572649753608 1345738572650669632 209051 mv Create 3e0d 0xdfffdef4/"./bw" 0x1 0x1b6 = 4 "" 1345738572651647673 1345738572653507377 209051 mv Pread 8d16 3 0xdfffae8c 8192 -1/"" 8192 -1 = 0 file does not exist 1345738572653614652 1345738572654039559 209051 mv Close 3e15 3 = 0 "" 1345738572654426753 1345738572654851661 209051 mv Fwstat 8d1e 4 0xc708 49 = -1 './bw' file does not exist 1345738572655401443 1345738572655739187 209051 mv Remove 3dfd 0xdfffcef4/"bz" = 0 "" 1345738572656063524 1345738572656922558 209051 mv Close 3e15 4 = 0 "" 1345738572657094365 1345738572657555310 209051 mv Open 3e05 0xbbe4/"#c/pid" 0x0 = 3 "" 1345738572657805897 1345738572657894733 209051 mv Pread 8d16 3 0xdfffeefc 20 -1 0xdfffeefc/".209051." 20 -1 = 12 "" 1345738572658193929 1345738572658201471 209051 mv Close 3e15 3 = 0 "" 1345738572658351488 1345738572658359031 209051 mv Exits 3e1d 0/""
Re: [9fans] APE rename: wstat for 'none'
> why is this related to ape? if you are none, then you are limited > as to what you can do on the file server. you may just have an auth problem. APE implements rename() in terms of wstat or copying. It's just doesn't try to work around failing wstat (that's perhaps a good thing) while mv does. There are no auth problem since I deliberatly run the python web app as none, not willing to give it eve's powers.
[9fans] APE rename: wstat for 'none'
Is there a specific reason of forbidding wstat for 'none' in fossil (/sys/src/cmd/fossil/9p.c:130,133)? This causes APE rename() to fail almost always (/sys/src/ape/lib/ap/plan9/rename.c:43) Perhaps rename() should be fixed to match mv (/sys/src/cmd/mv.c:/^mv1) to go around this? -- - Yaroslav
Re: [9fans] apparently nice summary of small linux pcs
do you mind quoting it here? 2012/6/17 Nick LaForge : > I'm still a little hesitant > about Nvidia, but to avoid further damaging relations with processor > designers I'll defer to Torvalds' statement on the matter from > Thursday in Finland.
Re: [9fans] dejavu sans
> Primarily DVI, but also observed with VGA. > LCD screens, in all cases. can you look at pixels through a magnifying glass and see if an image pixel affects more than one physical one? may it happen there's a resolution mismatch? VGAs can have artifacts which is very hard to get fixed: it is very important to get proper timining of video modes (things like refresh hz, sync +/- etc.) even though resolutions are identical. The other day I've got to craft custom vgadb entries using values captured by X11 through DDC.
Re: [9fans] dejavu sans
2012/6/12 : >>> In native, I no longer benefit from X11's rendering. Here, blurry >>> fonts look blurry. Sorry, is it DVI or VGA-connected?
Re: [9fans] Mini PCs
2012/6/12 Wes Kussmaul : > When you send an xkcd link to a large list, you make a dent in the > world's productivity. You can't look at just one. You have no idea how much right you are!
Re: [9fans] the `Look' command in Acme
2012/5/18 Peter A. Cejchan : >> select text in the first window >> >> > 2-1 chord on Look in the second window's tag line >> > > how about running a command from another window, w/o copying to the tagline? This is it: you don't copy to the tagline but just pass last selection as an argument.
Re: [9fans] Starting a blog on plan 9
> Could you elaborate on your choice of using "sam -d"? Agree, 'sam -d' is not an entry-level choice.
Re: [9fans] Mercurial port is official
Outstanding! Thanks a lot!
Re: [9fans] Summary of acme chords
not on the table: B2+B1 passes dot as arg to the cmd
Re: [9fans] Plan 9 keyboard and mouse
> I have a question about keyboard and mouse interaction in the OS that > relates to fast keys available for the windows. Do any exist for use of say > windows switching, closing or any other operations for menus within plan 9? The fast keys are mouse buttons, that's it. Just take it: once you get used to it you'll feel allright about this.
Re: [9fans] rc: fn name @{block}
I see now. Thank you guys! > Erik's point is that rc isn't discarding it. You have a list. It sets x > equal to that function, then sets @ equal to that same function. > > : iota; fn x @{x=y} > : iota; whatis x > fn x {x=y} > : iota; whatis '@' > fn @ {x=y}
Re: [9fans] nfactotum: mschap fix
> surely you need to use the "user" attribute. if you don't please send > a copy of chap that doesn't give compiler warnings. The user attribute is available at the end of CR protocol, upon 'attr' rpc request. The attached chap.c compiles cleanly here. - yk /* * CHAP, MSCHAP * * The client does not authenticate the server, hence no CAI * * Protocol: * * S -> C: random 8-byte challenge * C -> S: user in UTF-8 * C -> S: Chapreply or MSchapreply structure * S -> C: ok or 'bad why' * * The chap protocol requires the client to give it id=%d, the id of * the PPP message containing the challenge, which is used * as part of the response. Because the client protocol is message-id * specific, there is no point in looping to try multiple keys. * * The MS chap protocol actually uses two different hashes, an * older insecure one called the LM (Lan Manager) hash, and a newer * more secure one called the NT hash. By default we send back only * the NT hash, because the LM hash can help an eavesdropper run * a brute force attack. If the key has an lm attribute, then we send only the * LM hash. */ #include "std.h" #include "dat.h" extern Proto chap, mschap; enum { ChapChallen = 8, MShashlen = 16, MSchallen = 8, MSresplen = 24 }; static int chapcheck(Key *k) { if(!strfindattr(k->attr, "user") || !strfindattr(k->privattr, "!password")){ werrstr("need user and !password attributes"); return -1; } return 0; } static void nthash(uchar hash[MShashlen], char *passwd) { uchar buf[512]; int i; for(i=0; *passwd && i= 'a' && buf[i] <= 'z') buf[i] += 'A' - 'a'; memset(hash, 0, 16); memcpy(hash, stdtext, 8); memcpy(hash+8, stdtext, 8); desencrypt(hash, buf); desencrypt(hash+8, buf+7); } static void mschalresp(uchar resp[MSresplen], uchar hash[MShashlen], uchar chal[MSchallen]) { int i; uchar buf[21]; memset(buf, 0, sizeof(buf)); memcpy(buf, hash, MShashlen); for(i=0; i<3; i++) { memmove(resp+i*MSchallen, chal, MSchallen); desencrypt(resp+i*MSchallen, buf+i*7); } } static int chapclient(Conv *c) { int id, astype, nchal, npw, ret; uchar *chal; char *s, *pw, *res; Attr *attr; Key *k; Chapreply cr; MSchapreply mscr; DigestState *ds; ret = -1; chal = nil; res = nil; k = nil; attr = c->attr; if(c->proto == &chap){ astype = AuthChap; s = strfindattr(attr, "id"); if(s == nil || *s == 0){ werrstr("need id=n attr in start message"); goto out; } id = strtol(s, &s, 10); if(*s != 0 || id < 0 || id >= 256){ werrstr("bad id=n attr in start message"); goto out; } cr.id = id; }else if(c->proto == &mschap) astype = AuthMSchap; else{ werrstr("bad proto"); goto out; } c->state = "find key"; k = keyfetch(c, "%A %s", attr, c->proto->keyprompt); if(k == nil) goto out; c->attr = addattrs(copyattr(attr), k->attr); c->state = "read challenge"; if((nchal = convreadm(c, (char**)(void*)&chal)) < 0) goto out; if(strfindattr(k->attr, "user") == nil){ werrstr("key has no user (cannot happen?)"); goto out; } c->state = "write response"; if((pw = strfindattr(k->privattr, "!password")) == nil){ werrstr("key has no password (cannot happen?)"); goto out; } npw = strlen(pw); if(astype == AuthChap){ ds = md5(&cr.id, 1, 0, 0); md5((uchar*)pw, npw, 0, ds); md5(chal, nchal, (uchar*)cr.resp, ds); if(convwrite(c, &cr, sizeof cr) < 0) goto out; }else{ uchar hash[MShashlen]; memset(&mscr, 0, sizeof mscr); if(strfindattr(k->attr, "lm")){ lmhash(hash, pw); mschalresp((uchar*)mscr.LMresp, hash, chal); }else{ nthash(hash, pw); mschalresp((uchar*)mscr.NTresp, hash, chal); } if(convwrite(c, &mscr, sizeof mscr) < 0) goto out; } c->state = "read result"; if(convreadm(c, &res) < 0) goto out; if(strcmp(res, "ok") == 0){ ret = 0; werrstr("succeeded"); goto
Re: [9fans] rc: fn name @{block}
>> term% fn x @{x=y} >> term% whatis x >> fn x {x=y} > > creates to functions x and '@' definition {x=y}. The question is why it discards @ here?
Re: [9fans] rc: fn name @{block}
> you've misunderstood the current grammar. you have defined 2 functions > name and '@' as {block}. the binding, illustrated with parens is > fn (name @) {block} > the production in the grammer is > FN words brace > but since once production for words is words -> keyword, a keyword > is a valid function name. Then, how would you explain this: term% fn x @{x=y} term% whatis x fn x {x=y} term% fn 'x @'{x=y} term% whatis 'x @' fn 'x @' {x=y}
[9fans] nfactotum: mschap fix
Forwarding it to the list so people don't bother to debug themselves. It's tested with cifs and a local change which enables upas/fs to do IMAP with NTLM auth. -- Forwarded message ------ From: Yaroslav Date: 2012/3/30 Subject: Re: [9fans] SSHv2 To: erik quanstrom 2012/3/30 erik quanstrom : > On Fri Mar 30 09:48:50 EDT 2012, yari...@gmail.com wrote: >> 2012/3/30 erik quanstrom : >> > what's the basis for this claim? it might be broken, since we don't use it >> > much, but it's not missing. >> >> Yes, sorry, I've meant it's broken; details follow. > > try pulling a new copy. > > - erik There are phases mismatch between factotum's chapconv() and libauth's auth_respond(). I've checked plan9port - it has identical problem. Patch which fixes it follows: term% diff -c /n/sources/contrib/quanstro/root/sys/src/cmd/auth/factotum/chap.c /sys/src/cmd/auth/factotum/chap.c /n/sources/contrib/quanstro/root/sys/src/cmd/auth/factotum/chap.c:120,125 - /sys/src/cmd/auth/factotum/chap.c:120,126 ret = -1; chal = nil; + res = nil; k = nil; attr = c->attr; /n/sources/contrib/quanstro/root/sys/src/cmd/auth/factotum/chap.c:153,166 - /sys/src/cmd/auth/factotum/chap.c:154,163 c->state = "read challenge"; if((nchal = convreadm(c, (char**)(void*)&chal)) < 0) goto out; - if(astype == AuthMSchap && nchal != MSchallen) - c->state = "write user"; if((user = strfindattr(k->attr, "user")) == nil){ werrstr("key has no user (cannot happen?)"); goto out; } - if(convprint(c, "%s", user) < 0) - goto out; c->state = "write response"; if((pw = strfindattr(k->privattr, "!password")) == nil){ -- - Yaroslav
Re: [9fans] SSHv2
2012/3/30 erik quanstrom : >> contrib/quanstro/root/sys/src/cmd/auth/factotum > > contrib/install quanstro/nfactotum. move your old factotum out of the way > first. here's how one may work out contrib/install conflicts: % contrib/install quanstro/nfactotum # may report conflicts % replica/pull -v -s/ /dist/replica/nfactotum # resolves the conflicts
[9fans] rc: fn name @{block}
"fn name @{block}" doesn't cause block to run in a sub-shell, although it accepts the syntax. Is it someting should not be tried, or something shoud be fixed?
Re: [9fans] SSHv2
> Would it be hard to add cooked mode (-C)? never mind: it's easy to simulate by binding /dev/nul over /dev/consctl.
Re: [9fans] SSHv2
> contrib/blstuart/ssh It's great! All thumbs up! Would it be hard to add cooked mode (-C)? -- - Yaroslav
Re: [9fans] SSHv2
> contrib/quanstro/root/sys/src/cmd/auth/factotum Nfactotum misses proto=mschap which is used by cifs(4) for doing NTLM.
Re: [9fans] SSHv2
> How big is the dependency on p9p factotum? Is it just syntactic or > is there some needed functionality in p9p factotum which the sources > version doesn't provide? It's a strong one: it implements DSA sign/verify. BTW, without patching ndb/cs as mentioned before one won't be able to connect by DNS names.
Re: [9fans] Regarding 9p based "protocols" message framing
>> Perhaps initially: over an IP network, 9P used to run over IL. > > still does, including on the system i'm sending this from. > What advantages does it have over TCP? Does it worths the effort of tailoring it back in, esp. for a fossil/venti site? -- - Yaroslav
Re: [9fans] Regarding 9p based "protocols" message framing
> Why was I puzzled: because as a non Plan9 user / developer, I > usually think of the underlaying transport technology (be it sockets > or 9p) as a stream of bytes without explicit framing. As I understand, 9P itself is designed to operate on top of a message-oriented transport; however, it has everything required to run over a stream, esp. message length at beginning of every message. Framing is done by the library: the read9pmsg routine performs as many reads as necessary to return a complete 9P message to the caller.
Re: [9fans] Question about usage of Plan 9 based os systems
some of us. -- - Yaroslav
Re: [9fans] Mercurial and Plan 9
Speaking of which... what would be the trick to make libsec visible for an APE source? -- - Yaroslav
Re: [9fans] pxeboot & tftpd
Yes, tftpd becomes none and calls newns(2), thus the only way to have /net.alt populated for it is through /lib/namespace, as you figured out. -- - Yaroslav
Re: [9fans] GSoC application & ideas page
I'd suggest to complete native SSH2 implementation. 2012/3/13 Peter A. Cejchan : >> It would be nice to have a widget library including buttons, drop-down >> menus, multiple-line text entry, radio buttons, scrollbars, etc. > > Oh, no!!! > ++pac > -- - Yaroslav
Re: [9fans] miau, an IRC bouncer
well, there is a session persistense in Plan 9, and its name is vncs(1)…
Re: [9fans] fossil pb: FOUND!
please note that the sum du returns may be bigger than the actual storage used anyway - think deduping and compression done at venti level.
Re: [9fans] miau, an IRC bouncer
2012/1/12 John Floren : > but I missed the simplicity and > convenience of having just one nickname on IRC at all times why not to use their nickserv extentions for this purpose, and a startup script to deal with connection and authentication to select servers and channels?
Re: [9fans] Plan 9/plan9port coding conventions
> style(6) deals with some of your questions. Since nobody mentioned it yet, Besides style(6) you may want to read "Notes on Programming in C", Rob Pike, 1989.
Re: [9fans] venti and "contrib": RFC
2012/1/5 Bakul Shah : > You'd save a bunch of energy if you only powered up venti > disks once @ 4AM for a few minutes (and on demand when you > look at /n/dump). Though venti might have fits! And the disks > might too! So may be this calls for a two level venti? First > to an SSD RAID and a much less frequent venti/copy to hard > disks. I think you're confusing kenfs+worm with fossil+venti in sense that ken fs is a complete cache for worm while fossil is a write cache for venti. You need venti running all the time. -- - Yaroslav
Re: [9fans] a 9P session between debian client and Plan 9 server side
2012/1/3 Kin Loo : > longy# aux/listen1 -tv tcp!*!1114 /bin/exportfs -S /srv/memfs & Try exportfs -d and check /tmp/exportdb for hints.
Re: [9fans] ssh-agent
It only works with the new factotum, doesn't it? 2011/12/20 Steve Simon : > I ported Russ's ssh agent to plan9 for use with > the native, and linuxemu openssh implementations. > > The program is a protocol converter parsing requests > from openssh and extracting the keys from factotum > as requited. > > Code in /n/sources/contrib/steve/ssh-agent.tgz > > -Steve > -- - Yaroslav
Re: [9fans] RAID box with plan9 filesystem
2011/12/25 Aram Hăvărneanu : >> My experience with fossil has been somewhere between the two, >> but it's very easy to recover if you're using it with venti. > > What does this recovery mean? Does fossil need to be repopulated, an > O(n) operation, or does it act merely as a cache that gets cold? (an > O(1) operation). Fossil is a write cache for venti - "the blocks in the archival snapshots are moved to Venti". Read requests are proxied for venti. Recovery means initializing the filesystem using the given vac scrore, with no implied data transfer - blocks are copied-on-write. -- - Yaroslav
Re: [9fans] fun with replica and pull
Replica(8) is bad at overlaying several sources... Perhaps contrib(1) should hide this somehow.
Re: [9fans] 9vx instability
2011/11/22 Skip Tavakkolian : > because 9fans not only agree to disagree, they also disagree to agree :) +1
Re: [9fans] native (mostly) go for plan9
2011/10/31 ron minnich : > you forgot to > cd /go/src > . 9setup why not to have what's in 9setup directly in 9.mk?
Re: [9fans] p9any auth in u9fs: uid value in ticked is ignored
Uname in Tauth/Tattach indeed seem to be irrelevant for p9any but as it is external to 9P this may be a provision for other possible auth schemes where the uname may be the only place to provide an indentity being authenticated...
Re: [9fans] p9any auth in u9fs: uid value in ticked is ignored
devmnt always uses up->user for Tauth/Tattach no matter what an auth protocol would yield (/sys/src/9/port/devmnt.c:281). Stock 9P servers tolerate this and check Tattach.uname to match Tauth.uname but use t.cuid or t.suid as the true user identity (unless no auth required). Anyway, simply trusting Tattach.uname is too naïve - at least for p9any. > It's true that the server must take account of the result of > authentication, but although that might not > mean identity, the results of authentication should be consistent with > the name presented as uname > in Tauth/Tattach. In the context of p9auth I think that means that the > cuid of AuthInfo should match.
[9fans] p9any auth in u9fs: uid value in ticked is ignored
There is a security problem with p9auth in u9fs: it uses uname from Tauth/Tattach as user's identity - ignoring the user id which has been authenticated to the auth server. As uname is always set to up->user in devmnt, this means that: a) a user cann't have a different name on the u9fs machine; and, more serious, b) a user can easily masquerade as another user to u9fs by simply booting his terminal under that user while using own credentials for optaining the ticket. A proposed fix has been submitted as /n/sources/patch/u9fs-p9sk1: /n/dump/2011/1010/sys/src/cmd/unix/u9fs/authp9any.c:369,375 - /sys/src/cmd/unix/u9fs/authp9any.c:369,378 fprint(2, "p9anyattach: afid %d state %d\n", rx->afid, sp->state); if (sp->state == Established && strcmp(rx->uname, sp->uname) == 0 && strcmp(rx->aname, sp->aname) == 0) + { + rx->uname = sp->t.suid; return nil; + } return "authentication failed"; } Whether to use t.suid or t.cuid as the target uid remains an open question: authsrv(6) says t.suid represents target uid; the real use, howerver, is not that clear: cwfs for 9p2k uses t.suid; while fossil, exportfs, cpu -R and cwfs for old9p check against t.cuid. Comments in /sys/include/authsrv.h:58,76 appear somewhat opaque until authsrv(6) and p9sk1 client/server code in factotum are carefully studied. - Yaroslav ─ Related matter: /sys/src/9/port/devmnt.c:281 /sys/src/9/port/devmnt.c:347 /sys/src/cmd/auth/factotum/p9sk1.c:170,171 /sys/src/cmd/auth/factotum/rpc.c:341 /sys/src/libauth/auth_chuid.c:37 /sys/src/cmd/unix/u9fs/authp9any.c:370 /sys/src/cmd/unix/u9fs/u9fs.c:417,420 /sys/src/cmd/cpu.c:665 /sys/src/cmd/fossil/9auth.c:30,38 /sys/src/cmd/fossil/9auth.c:132,151 /sys/src/cmd/fossil/9auth.c:155 /sys/src/cmd/fossil/9p.c:999,1007 /sys/src/cmd/cwfs/9p1.c:134,138 /sys/src/cmd/cwfs/9p2.c:252,262 /sys/src/cmd/cwfs/auth.c:313 /sys/src/cmd/cwfs/auth.c:291 /sys/src/cmd/exportfs/exportfs.c:189,192
Re: [9fans] namec() dislikes #M - why?
Perhaps, Steve wants rio-simulated /dev/cons. Steve, doesn't mount -b $wsys /dev in the new ns do the trick? 2011/10/4 Charles Forsyth : > #M, but devcons? devcons is #c > > On 4 October 2011 14:34, Steve Simon wrote: >> >> then build a new one including some bits of devcons. > > ... >> >> Also, why is this done here and not in fsattach() of devcons >> (with a refcount)? -- - Yaroslav
Re: [9fans] reverse search direction in p9p acme
> rio doesn't have button 3 search. acme does. been missing a search in rio few times...
[9fans] 9fans archive engine
Is the software which powers 9fans web archive publicly available?
Re: [9fans] interesting(?) widgets idea
do we really need screens? lets move everything into our imagination. all we need is to get a draw(3) interface to it...
Re: [9fans] auth change? / auth for u9fs on a mac
> I am pretty sure this has worked for several years but now it is broken: Has mac-owner's key been expired in your auth keyfs? >Are you all happy to sprinkle bootes key onto unix machines (hard to believe)? negative: the credentials you put in /etc/u9fs.key represent the service, not a client. A client may be any valid user registered in the AS. U9fs uses its key to decrypt tickets issued by the AS to clients.
Re: [9fans] novel userspace paradigms introduced by plan 9
one might find http://www.glendix.org/ project interesting 2011/7/2 Robert Seaton : > Hello, 9fans! > ...