|
@@ -30,8 +30,6 @@ g00r00 Line 7 : User's handle/alias
|
|
|
*/
|
|
|
|
|
|
var Reset string = Color(0)
|
|
|
-var READFD int
|
|
|
-var WRITEFD int
|
|
|
|
|
|
type DropfileConfig struct {
|
|
|
comm_type int
|
|
@@ -51,8 +49,15 @@ type Door struct {
|
|
|
config DropfileConfig
|
|
|
READFD int
|
|
|
WRITEFD int
|
|
|
+ TimeOut time.Time
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+func (d *Door) TimeLeft() time.Duration {
|
|
|
+ return d.TimeOut.Sub(time.Now())
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
func (d *Door) ReadDropfile(filename string) {
|
|
|
file, err := os.Open(filename)
|
|
|
if err != nil {
|
|
@@ -71,7 +76,6 @@ func (d *Door) ReadDropfile(filename string) {
|
|
|
for scanner.Scan() {
|
|
|
line := scanner.Text()
|
|
|
lines = append(lines, line)
|
|
|
-
|
|
|
}
|
|
|
|
|
|
d.config.comm_type, err = strconv.Atoi(lines[0])
|
|
@@ -87,11 +91,10 @@ func (d *Door) ReadDropfile(filename string) {
|
|
|
d.config.node_number, err = strconv.Atoi(lines[10])
|
|
|
|
|
|
d.READFD = d.config.comm_handle
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
d.WRITEFD = d.config.comm_handle
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ d.TimeOut = time.Now().Add(time.Duration(d.config.time_left) * time.Minute)
|
|
|
}
|
|
|
|
|
|
func (d *Door) HasKey() bool {
|
|
@@ -109,12 +112,14 @@ func (d *Door) HasKey() bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-var Unicode bool
|
|
|
-var CP437 bool
|
|
|
-var Full_CP437 bool
|
|
|
-var Height int
|
|
|
-var Width int
|
|
|
+var Unicode bool
|
|
|
+var CP437 bool
|
|
|
+var Full_CP437 bool
|
|
|
+var Height int
|
|
|
+var Width int
|
|
|
|
|
|
+
|
|
|
+
|
|
|
func (d *Door) detect() {
|
|
|
|
|
|
|
|
@@ -188,6 +193,8 @@ func (d *Door) detect() {
|
|
|
fmt.Printf("Unicode %v Screen: %d X %d\n", Unicode, Width, Height)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
func (d *Door) Init() {
|
|
|
var dropfile string
|
|
|
|
|
@@ -201,10 +208,11 @@ func (d *Door) Init() {
|
|
|
|
|
|
d.ReadDropfile(dropfile)
|
|
|
|
|
|
- fmt.Printf("BBS %s, User %s / Handle %s / File %d\n", d.config.BBSID, d.config.real_name, d.config.handle, d.READFD)
|
|
|
+ fmt.Printf("BBS %s, User %s / Handle %s / File %d\n", d.config.BBSID, d.config.real_name, d.config.handle, d.config.comm_handle)
|
|
|
d.detect()
|
|
|
}
|
|
|
|
|
|
+
|
|
|
func (d *Door) Write(output string) {
|
|
|
buffer := []byte(output)
|
|
|
n, err := syscall.Write(d.WRITEFD, buffer)
|