zixia / bbs

大话西游 BBS
https://www.zixia.net/bbs
GNU General Public License v3.0
21 stars 3 forks source link

recover .BOARDS from 0Announce and other #5

Closed realkcn closed 3 years ago

realkcn commented 3 years ago

Struct: boardheader

kbs_bbs/site/zixia.h kbs_bbs/src/struct.h

#define MAXBOARD 2048

struct boardheader {
    char filename[STRLEN];      /* the BOARDS files */
    char BM[BM_LEN];
    char title[STRLEN];
    unsigned level; // level设成PERM_SYSOP.
    unsigned int idseq; // idseq就是1自增的数应该就可以
    unsigned int clubnum; /*如果是俱乐部,这个是俱乐部序号*/
    unsigned int flag;
    union {
    unsigned int adv_club; /* 用于指定club对应关系,0表示没有,1表示序号*/
    unsigned int group_total; /*如果是二级目录,应该是目录的版面总数*/
    } board_data;
    time_t createtime; //  createtime写现在
/*    int toptitle; move to board status */
    unsigned int score_level;
    char ann_path[128]; // ann_path是0Announce/groups下的版面精华区相对路径
    int group; /*所属目录*/
    char title_level; /* 设定用户需要什么title可见这个版面*/
    char des[195]; /*版面描述,用于www的版面说明和search */
#ifdef FLOWBANNER
        int bannercount;
        char banners[MAXBANNER][BANNERSIZE];
#endif
}
$ ./getboard picture
1349
filename: Picture
idreq   : 2284053
title   : 2[影音]      贴图
flag    : 41200
level   : 0
group   : 4dc
ann_path: rec.faq/Picture

strcpy(rela_board[count].title, bh->title+13);
从第十三个字符开始,是版面中文名

list of boards:

$ find . -maxdepth 2 -name .DIR -type f| sed "s/.*\/\(.*\)\/\.DIR$/\1/g"
cherryzl_fan
YTHT_Crafts
circler
kika_room
WOW_XSXQRaid
Italy
StarCraft
PKU.CHEM
AimGraduate
QiXiaoFu
THU.English12B
FightChick
Billiards
Princeton
GirlBoy
CoxswainElection6
.....

Total: 761

Content of file ".Names" in 0Announce:

bbs@bbs:~$ cat 0Announce/groups/Entertain/.Names
#
# Title=生亦何哀                        (BM: last della spiderbug)
#
Name=Fashion/流行时尚
Attach=0
Path=~/Fashion
Numb=1
#
Name=Birthday/生亦何哀
Attach=0
Path=~/Birthday
Numb=2
#
Name=Dance/舞迷之家
Attach=0
Path=~/Dance
Numb=3
#
Name=food/吃遍天下
Attach=0
Path=~/food
Numb=4
#
Name=开怀笑话                              (BM: michealr)
Attach=0
Path=~/Joke
Numb=5

Group defined in etc/menu.ini

@EGroups     10, 25, 0, "0BBS",      "0) 斧 头 帮 -- [黑帮/系统]"
@EGroups     0, 0, 0,   "1THU",      "1) 大话西游 -- [科学/技术]"
@EGroups     0, 0, 0,   "2Class",   "2) 大小分舵 -- [地盘/校班]"
@EGroups     0, 0, 0,   "3Computer", "3) 吃喝玩乐 -- [生活/享受]"
@EGroups     0, 0, 0,   "4Rec",      "4) 游戏人生 -- [游戏/娱乐]"
@EGroups     0, 0, 0,   "5Art",      "5) 吟风弄月 -- [感性/文化]"
@EGroups     0, 0, 0,   "6Society",  "6) 西游之路 -- [出国/取经]"
@EGroups     0, 0, 0,   "7Science",  "7) 豆腐西施 -- [信息/商业]"
@EGroups     0, 0, 0,   "8City",     "8) 东成西就 -- [乡情/城市]"
@EGroups     0, 0, 0,   "9Talk",     "9) 大圣取经 -- [专业/申请]"

Some other information from syssecurity board.

huan commented 3 years ago

Util Scripts: print-board.sh

Output Path, Name, BM from /bbs/0Announce/groups directory

#!/usr/bin/env bash

set -e

function outputName () {
  local Path=$1
  local Name=$2
  local BM=$3

  if [[ -n "$Name" ]]; then
    BM=${BM//(BM: /}
    BM=${BM//)/}
    echo -e "{\"path\": \"$Path\", \"name\": \"$Name\", \"bm\": \"$BM\"},"
  fi
}

function printDotName () {
  dotNameFile=$1

  local Path=$1
  local Name=$2
  local BM=$3

  while IFS= read -r line
  do
    if [[ $line =~ ^Name=([^[:space:]]+)\ *(.*) ]]; then
      Name="${BASH_REMATCH[1]}"
      BM="${BASH_REMATCH[2]}"
    elif [[ $line =~ ^Path=~/(.+)$ ]]; then
      Path="${BASH_REMATCH[1]}"
    elif [[ $line =~ ^\# ]]; then
      outputName "$Path" "$Name" "$BM"
      Path=
      Name=
      BM=
    fi
  done < $dotNameFile

  outputName "$Path" "$Name" "$BM"
}

printDotName $1

Sample output:

$ for d in /bbs/0Announce/groups/*; do ./print-board.sh $d/.Names; done
{"path": "sysop", "name": "斧头帮大堂", "bm": "SYSOP"},
{"path": "Announce", "name": "斧头帮通告", "bm": "SuperMM"},
...
huan commented 3 years ago

Util Script: json-board.ts

import fs from 'fs'

const boardList = require('./boards.json')

const content = fs.readFileSync('./list.txt').toString()
const pathList = content.split('\n')

const content2 = fs.readFileSync('./group').toString()
const annBoardList = content2.split('\n')
const annBoards = {} as any
annBoardList.forEach(line => {
  if (!line) { return }
  const [ann, board] = line.split(/\s+/)

  // 2[影音]      贴图
  // 1[大话西游] TODO_List
  let prefix = ''
  switch (ann) {
    case 'AxFaction':
      //   @EGroups     10, 25, 0, "0BBS",      "0) 斧 头 帮 -- [黑帮/系统]"
      prefix = '0[斧 头 帮]'
      break
    case 'Culture':
      prefix = '5[吟风弄月]'
      break
    case 'DouFuGirl':
      // @EGroups     0, 0, 0,   "7Science",  "7) 豆腐西施 -- [信息/商业]"
      prefix = '7[豆腐西施]'
      break
    case 'Entertain':
      // @EGroups     0, 0, 0,   "3Computer", "3) 吃喝玩乐 -- [生活/享受]"
      prefix = '3[吃喝玩乐]'
      break
    case 'Factions':
      // @EGroups     0, 0, 0,   "2Class",   "2) 大小分舵 -- [地盘/校班]"
      prefix = '2[大小分舵]'
      break
    case 'GoWest':
      // @EGroups     0, 0, 0,   "6Society",  "6) 西游之路 -- [出国/取经]"
      prefix = '6[西游之路]'
      break
    case 'PandoraBox':
      // @EGroups     0, 0, 0,   "8City",     "8) 东成西就 -- [乡情/城市]"
      prefix = '8[东成西就]'
      break
    case 'Poem':
      // @EGroups     0, 0, 0,   "5Art",      "5) 吟风弄月 -- [感性/文化]"
      prefix = '5[吟风弄月]'
      break
    case 'Reserve':
      // @EGroups     0, 0, 0,   "9Talk",     "9) 大圣取经 -- [专业/申请]"
      prefix = '9[大圣取经]'
      break
    case 'Watering':
      // @EGroups     0, 0, 0,   "4Rec",      "4) 游戏人生 -- [游戏/娱乐]"
      prefix = '4[游戏人生]'
      break
    case 'zixia':
      // @EGroups     0, 0, 0,   "1THU",      "1) 大话西游 -- [科学/技术]"
      prefix = '1[大话西游]'
      break

    default:
      console.info('unknown line:', line)
      throw new Error('faint')
  }

  annBoards[board] = prefix
})

const newBoards = {} as {
  [path: string]: {
    name?: string,
    path?: string,
    bm?: string[],
  }
}

boardList.forEach((board: any) => { newBoards[board.path] = {} })
pathList.forEach(p => { newBoards[p] = { path: p } })

boardList.forEach((board: any) => {
  console.info('board: ', board)
  const b = newBoards[board.path]
  const prefix = annBoards[board.path]
  if (!prefix) {
    throw new Error(board.path)
  }

  b.name = prefix + ' ' + board.name.replace(/^.*\//, '')
  b.path = board.path
  if (!board.bm) {
    b.bm = ['SYSOPS']
  } else {
    b.bm = board.bm.split(/\s+/)
  }
})

// console.info(boardList, pathList)
console.info(JSON.stringify(newBoards))

Data files

Data files:

$cat boards.json
[
    {"path": "sysop", "name": "斧头帮大堂", "bm": "SYSOP"},
    {"path": "Announce", "name": "斧头帮通告", "bm": "SuperMM"},
    {"path": "vote", "name": "投票结果", "bm": "SYSOP"},
    {"path": "Manager", "name": "猪头开会", "bm": "SuperMM ZhuTou"},
...

$ more list.txt 
0000
17Salsa
1Club
2.Trade
29BBS
3.Look4Group
3Amanager
...

$ more group 
AxFaction sysop
AxFaction Announce
AxFaction vote
AxFaction Manager
AxFaction INeed
AxFaction FAQ
AxFaction test
AxFaction Discontentme
...
realkcn commented 3 years ago

成功就在眼前了!

huan commented 3 years ago

Next step: convert json to .BOARDS

The json file has been put at /bbs/tmp/convert folder:

bbs@bbs:~/tmp/convert$ ls -l boards.json 
-rw-r--r-- 1 bbs bbs 62397 Jan 21 22:20 boards.json

image

How to read json in C ... -_-b...

huan commented 3 years ago

boardheader.title

bbs@bbs:~/tmp/convert$ wc -l < dotboards.name.txt
835
bbs@bbs:~/tmp/convert$ cat dotboards.name.txt ```sh 0[斧 头 帮] 斧头帮大堂 0[斧 头 帮] 斧头帮通告 0[斧 头 帮] 投票结果 0[斧 头 帮] 猪头开会 0[斧 头 帮] 官人我要 0[斧 头 帮] 斧头帮常见问题集 0[斧 头 帮] 独自呻吟 0[斧 头 帮] 好兄弟亲亲嘴儿 0[斧 头 帮] 斧头帮谏言堂 0[斧 头 帮] 妇产科档案 0[斧 头 帮] 斧头帮练功房 0[斧 头 帮] 猪头没有 0[斧 头 帮] 修炼成仙 0[斧 头 帮] 帮中榜 0[斧 头 帮] 大话服务 0[斧 头 帮] 北京阿卡信息技术有限公司 0[斧 头 帮] gagaz的温馨小屋 0[斧 头 帮] 妇产科 0[斧 头 帮] 众神之黄昏工会 0[斧 头 帮] 漂漂秀 0[斧 头 帮] 反垃圾邮件完全手册 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 斧头帮站庆 0[斧 头 帮] 站庆筹备组 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 过滤器 0[斧 头 帮] 重阳宫 0[斧 头 帮] 首长办公室 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 光光灌水站 0[斧 头 帮] 紫霞聚宝盆 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 版面中文名称待定 2[大小分舵] 环境科学与工程系 2[大小分舵] 英雄无敌环82 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 炼金屋 0[斧 头 帮] 最高评议会 0[斧 头 帮] 人事部办公室 0[斧 头 帮] 人事部 0[斧 头 帮] 副本部 0[斧 头 帮] 人事部 0[斧 头 帮] 副本部 0[斧 头 帮] 达纳苏斯 0[斧 头 帮] 副本部 4[游戏人生] 太阳井 0[斧 头 帮] 版面中文名称待定 4[游戏人生] 战士 4[游戏人生] 圣骑士 4[游戏人生] 萨满 4[游戏人生] 猎人 4[游戏人生] 潜行者 4[游戏人生] 德鲁伊 4[游戏人生] 牧师 4[游戏人生] 法师 4[游戏人生] 术士 4[游戏人生] 死亡骑士 0[斧 头 帮] 会议室 0[斧 头 帮] 开心网 0[斧 头 帮] 一起Salsa社区筹建委员会 0[斧 头 帮] 版面中文名称待定 0[斧 头 帮] 第二会议室 0[斧 头 帮] 老六酒馆 0[斧 头 帮] 妖怪 0[斧 头 帮] 卢梭 0[斧 头 帮] 紫霞投资俱乐部 0[斧 头 帮] 新时代 4[游戏人生] Core 0[斧 头 帮] 交易与综合 0[斧 头 帮] 公会人事部 4[游戏人生] 黎明帝王 0[斧 头 帮] 合晟资产 4[游戏人生] 暗黑破坏神3 0[斧 头 帮] zixia联盟 0[斧 头 帮] 版面中文名称待定 5[吟风弄月] Very Taiwan Very Top 5[吟风弄月] 藕荷色心情 5[吟风弄月] 书香伴西游 2[大小分舵] 蔚蓝书店 5[吟风弄月] 日本文化 5[吟风弄月] 文学艺术 5[吟风弄月] 星座传说 5[吟风弄月] 创意无限 5[吟风弄月] 科幻空间 7[豆腐西施] 信不信由你 7[豆腐西施] 保险市场 3[吃喝玩乐] 豆腐西施 7[豆腐西施] 商道 7[豆腐西施] 房屋信息 7[豆腐西施] 股市大玩家 7[豆腐西施] 法律 7[豆腐西施] 笔记本电脑 7[豆腐西施] 海上山艺术中心 7[豆腐西施] 丫丫笔记本俱乐部 7[豆腐西施] 紫霞发财 4[游戏人生] 鹊桥 7[豆腐西施] 电脑市场 7[豆腐西施] 我爱购物 7[豆腐西施] 考研和推研 7[豆腐西施] 就业信息 7[豆腐西施] 创业者论坛 7[豆腐西施] 业主之家 7[豆腐西施] 三叶草笔记本俱乐部 7[豆腐西施] 第七内阁 7[豆腐西施] 二手市场 7[豆腐西施] 兼职工作信息 7[豆腐西施] 房地产 7[豆腐西施] 光盘刻录 7[豆腐西施] 理财人生 7[豆腐西施] 数码相机 7[豆腐西施] 学车信息 7[豆腐西施] 掌上电脑 7[豆腐西施] 咪咪代购小铺 7[豆腐西施] 校园信息 7[豆腐西施] 交通信息 7[豆腐西施] 水银时尚购物 7[豆腐西施] 代理信息和紫霞店铺 7[豆腐西施] 商务广告和代理信息 7[豆腐西施] 房地产评估与实务 7[豆腐西施] 七小福 7[豆腐西施] 什锦派 3[吃喝玩乐] 流行时尚 3[吃喝玩乐] 生亦何哀 3[吃喝玩乐] 舞迷之家 3[吃喝玩乐] 吃遍天下 3[吃喝玩乐] 开怀笑话 3[吃喝玩乐] 摄影艺术 3[吃喝玩乐] 我爱吉他 3[吃喝玩乐] 影视天地 3[吃喝玩乐] 泥塘故事 3[吃喝玩乐] 足球世界 3[吃喝玩乐] 游山玩水 3[吃喝玩乐] 台球城 3[吃喝玩乐] 贴图专区 3[吃喝玩乐] 传播理论与实践 3[吃喝玩乐] 大话动漫 3[吃喝玩乐] 学友俱乐部 3[吃喝玩乐] 8仙过海 3[吃喝玩乐] 东瀛来风俱乐部 3[吃喝玩乐] 红黑世界 3[吃喝玩乐] 乒乓球 3[吃喝玩乐] 江湖恩仇 3[吃喝玩乐] 数码摄影 3[吃喝玩乐] 冰上圆舞曲 3[吃喝玩乐] NBA直播间 3[吃喝玩乐] 宠物乐园 3[吃喝玩乐] 滑雪 3[吃喝玩乐] 三区论坛 3[吃喝玩乐] 球迷之家 3[吃喝玩乐] 碧水情深 3[吃喝玩乐] 国际米兰 3[吃喝玩乐] 红魔曼联 3[吃喝玩乐] 视频游戏 3[吃喝玩乐] 健美舞台 3[吃喝玩乐] 自行车运动 3[吃喝玩乐] 七彩祥云 3[吃喝玩乐] 群星璀璨 3[吃喝玩乐] 山野穿越 3[吃喝玩乐] 健康塑身 3[吃喝玩乐] 孩子 3[吃喝玩乐] 热舞 3[吃喝玩乐] 纯真·五月天 3[吃喝玩乐] 网球 3[吃喝玩乐] 水木纪念T恤 3[吃喝玩乐] 高达 3[吃喝玩乐] 青春女神 3[吃喝玩乐] 跑道人生 3[吃喝玩乐] 阳光游子·周华健 3[吃喝玩乐] 棒垒球 3[吃喝玩乐] 六十四格 3[吃喝玩乐] 纹枰论道 3[吃喝玩乐] 棋道 3[吃喝玩乐] 篮球世界 3[吃喝玩乐] 羽毛球 3[吃喝玩乐] 羽毛球 3[吃喝玩乐] 虹 3[吃喝玩乐] 滑翔伞 3[吃喝玩乐] 自由搏击 2[大小分舵] 华中理工大学 2[大小分舵] 青蛙大学 2[大小分舵] 浙江大学 2[大小分舵] 北大化学 2[大小分舵] 清华机84 2[大小分舵] 清华热九 2[大小分舵] 清华文九 2[大小分舵] 自在心语 2[大小分舵] 清华传播系 2[大小分舵] 中山大学 2[大小分舵] 上海交通大学 2[大小分舵] 中国科技大学 2[大小分舵] 计算语言学实验室 2[大小分舵] 清华英8 2[大小分舵] 天津大学 2[大小分舵] 北京大学 2[大小分舵] 清华大学29号楼 2[大小分舵] 清华英01 2[大小分舵] 上海技物所01 2[大小分舵] 领会精神8 2[大小分舵] 北医基础97 2[大小分舵] 四中九七 2[大小分舵] 七三之家 2[大小分舵] 华南木棉 2[大小分舵] 清华力92 2[大小分舵] 英九空间 2[大小分舵] 清华流机6 2[大小分舵] 南开大学 2[大小分舵] 南京大学 2[大小分舵] 复旦大学 2[大小分舵] 京华烟云 2[大小分舵] 东方明珠 8[东成西就] 深圳 8[东成西就] 苏州 2[大小分舵] 西安交通大学 2[大小分舵] 临汾一中高234班 2[大小分舵] 好孩子的藏宝箱 2[大小分舵] 清华热动92 2[大小分舵] 清华热动93 2[大小分舵] 北京航空航天大学 2[大小分舵] 四大皆空 2[大小分舵] 热七特快 2[大小分舵] 清华生医八 2[大小分舵] 清华化71 2[大小分舵] 文心雕龙 2[大小分舵] 此生翼翎 2[大小分舵] 新闻久久 2[大小分舵] 潮声茶韵 2[大小分舵] 清华工13 2[大小分舵] 西芹百合171 2[大小分舵] 清华生医2 2[大小分舵] 一生依伊 2[大小分舵] 清华核研01 2[大小分舵] 百鬼夜行 2[大小分舵] 清华热8 2[大小分舵] 清华电82 2[大小分舵] 温岭中学高三20 2[大小分舵] 清华力01 2[大小分舵] 清华工研03 2[大小分舵] 清华话剧队 2[大小分舵] 清华化学系学生会 2[大小分舵] 会长的野望 2[大小分舵] 文馨方舟 2[大小分舵] 清华文一 2[大小分舵] 三生有缘 2[大小分舵] 生忆久久 2[大小分舵] 清华建管1 2[大小分舵] 《文苑》报 2[大小分舵] 清华文研1 2[大小分舵] 话·感情·家 2[大小分舵] 清华工研04 2[大小分舵] 文所未闻 2[大小分舵] 清华工0 2[大小分舵] 清华社会学系 2[大小分舵] 清华学生法学会 2[大小分舵] 清华电12 2[大小分舵] 清华电11 2[大小分舵] 清华机2党支部 2[大小分舵] 清华机研21 2[大小分舵] 胖李的班 2[大小分舵] 清华机研13 2[大小分舵] 清华机11 2[大小分舵] 清华大学28号楼 2[大小分舵] 清华机04 2[大小分舵] 清华机12 2[大小分舵] 晓羽俱乐部 2[大小分舵] 清华机械22§活力无限 2[大小分舵] 清华工12 2[大小分舵] 记些而已 2[大小分舵] 清华电04 2[大小分舵] 清华深管研1班 2[大小分舵] 清华机1党支部 2[大小分舵] 17幼儿园 2[大小分舵] 北京理工大学 2[大小分舵] 清华附中 2[大小分舵] 北京师范大学 2[大小分舵] 清华电81 2[大小分舵] 清华电14 2[大小分舵] 非请勿入 2[大小分舵] 俱乐部测试 2[大小分舵] birby的小屋 2[大小分舵] 纨绔腐败俱乐部 2[大小分舵] C13工作室 2[大小分舵] Sports家园 2[大小分舵] kika之家 2[大小分舵] 科幻生活 2[大小分舵] 海外俱乐部 2[大小分舵] 牛头俱乐部 2[大小分舵] 物以类聚 2[大小分舵] 不变的家机83 2[大小分舵] 深圳中学97实验班 2[大小分舵] 魅力四射F5 2[大小分舵] 写文拈字 2[大小分舵] 清华公管 2[大小分舵] 圈圈小猪窝 2[大小分舵] 清华大学仪11班版 2[大小分舵] 清华热0 2[大小分舵] 清华力02 2[大小分舵] 水木清� 2[大小分舵] 清华大学航天航空学院 2[大小分舵] 青蛙大学 2[大小分舵] 工程物理系 2[大小分舵] 汽车工程系 2[大小分舵] 生物医学工程系 2[大小分舵] 工物92 2[大小分舵] 化学系 2[大小分舵] 人文社会科学学院 2[大小分舵] 自动化系 2[大小分舵] 电机与应用电子技术系 2[大小分舵] 土木水利学院 2[大小分舵] 清华大学航天航空学院 2[大小分舵] 工业工程系 2[大小分舵] 机械工程系 2[大小分舵] 物理系 2[大小分舵] 精密仪器与机械学系 2[大小分舵] 热能工程系 2[大小分舵] 新闻与传播学院 2[大小分舵] 公共管理学院 2[大小分舵] 深圳研究生院 2[大小分舵] 中学班级 2[大小分舵] 清华社团组织 2[大小分舵] 原创天地 2[大小分舵] 国内院校 2[大小分舵] 北京大学 2[大小分舵] 浙江大学 2[大小分舵] 临山小轩 2[大小分舵] 化学工程系 2[大小分舵] 回龙观 2[大小分舵] 清华结94 2[大小分舵] 清华机16 2[大小分舵] 数学科学系 2[大小分舵] 数学科学系 2[大小分舵] 清华电91 2[大小分舵] 仪12 2[大小分舵] 聆依依零 2[大小分舵] 中国科技大学 2[大小分舵] 清华大学热动12班 2[大小分舵] 永痕文学社 2[大小分舵] 清华化83 2[大小分舵] 西南财经大学 2[大小分舵] 腊月话雪 2[大小分舵] 电机系学生工作联盟 2[大小分舵] 清华分八 2[大小分舵] 汽二三班 2[大小分舵] 清华化82 2[大小分舵] 清华化81班 2[大小分舵] 他山之玉 6[西游之路] 麻省 6[西游之路] 纽约州 6[西游之路] 德州 6[西游之路] 佐治亚 6[西游之路] 宾州 6[西游之路] 东北沿海 6[西游之路] 南北卡罗来纳州 6[西游之路] 东南沿海 6[西游之路] 敌后中央南部 6[西游之路] 太平洋沿岸 6[西游之路] 山地诸州 6[西游之路] 大平原地区 6[西游之路] 五大湖区 6[西游之路] 爱因斯坦家乡 6[西游之路] 斯坦福 6[西游之路] 孤苦一族 6[西游之路] 这个世界不是美国的 6[西游之路] 枫叶之国 6[西游之路] English Bar 6[西游之路] 出国注意事项 6[西游之路] 玉米地 6[西游之路] 狮城求学 6[西游之路] 法兰西 6[西游之路] 俄罗斯 6[西游之路] 日本 6[西游之路] 德国 6[西游之路] 签证信息 6[西游之路] 东方之珠 6[西游之路] 英国 6[西游之路] 南加利福尼亚阳光带 6[西游之路] 北加利福尼亚地区 6[西游之路] 我心飞扬 6[西游之路] 昨日重现 6[西游之路] 纽约大学 6[西游之路] 罗切斯特大学 6[西游之路] 马里兰的公园 6[西游之路] 约翰霍普金斯 6[西游之路] 北国森林 6[西游之路] 哥大 6[西游之路] 伊萨卡 6[西游之路] 长岛石溪 6[西游之路] 风城芝加哥 6[西游之路] 安省联盟 6[西游之路] 奎北克联盟 6[西游之路] 不列颠哥伦比亚大学 6[西游之路] 牛仔之乡 6[西游之路] 加州伯克利大学 6[西游之路] 南加州大学 6[西游之路] 袋鼠之乡 6[西游之路] 英伦老友 6[西游之路] 仁斯利尔理工大学 6[西游之路] 俄亥俄州立大学 6[西游之路] 威斯康星 6[西游之路] 多伦多大学 6[西游之路] 西天取经 6[西游之路] GRE考试 6[西游之路] 耶鲁大学 6[西游之路] 贡院六号 6[西游之路] 英语教室 6[西游之路] 学校 6[西游之路] 普度大学 6[西游之路] 美国 6[西游之路] 其它国家地区 6[西游之路] 安娜堡 6[西游之路] 比翼双飞 6[西游之路] 弗吉尼亚 6[西游之路] 密歇根州立大学 6[西游之路] 意大利 8[东成西就] 牛虱最新消息 8[东成西就] 水蟒 8[东成西就] RedHat 8[东成西就] Linux 8[东成西就] 新闻组管理 8[东成西就] cn.bbs.admin.announc 8[东成西就] 转信系统统计信息 8[东成西就] 厦门 8[东成西就] 安徽 8[东成西就] 北国冰城 8[东成西就] 天津 8[东成西就] 三湘四水 8[东成西就] 齐鲁大地 8[东成西就] 八桂大地 8[东成西就] 南粤风情 8[东成西就] 黔山秀水 8[东成西就] 东北老家 8[东成西就] 浙江 8[东成西就] 烟雨秦淮 8[东成西就] 沈阳 8[东成西就] 中原采风·河南 8[东成西就] 花城广州 8[东成西就] 成都 8[东成西就] 重庆 8[东成西就] 魅力琴岛 8[东成西就] 武汉 8[东成西就] 北方明珠·大连 5[吟风弄月] 童话与梦 5[吟风弄月] 西游心情 5[吟风弄月] 恋曲1996 5[吟风弄月] 儒释道 5[吟风弄月] 品味人生 5[吟风弄月] 四二拍子 5[吟风弄月] 青蛙王子 5[吟风弄月] 毕业心情 5[吟风弄月] 洪水滔天 5[吟风弄月] 家庭生活 5[吟风弄月] 五百年往事 5[吟风弄月] 左岸右岸 5[吟风弄月] 圣经研究 5[吟风弄月] 春光乍泄 5[吟风弄月] 高山丽水 5[吟风弄月] 美丽的秘密 5[吟风弄月] 科学幻想 5[吟风弄月] 煮酒论英雄 5[吟风弄月] 历史 5[吟风弄月] 汽车世界 5[吟风弄月] 聊斋鬼话 5[吟风弄月] 英美诗歌 5[吟风弄月] 美好童年 5[吟风弄月] 武侠世家 5[吟风弄月] 红楼梦 5[吟风弄月] 艺意不舍 5[吟风弄月] 古典诗词 5[吟风弄月] 中华武术 5[吟风弄月] 第五内阁 5[吟风弄月] 中国古典文化 5[吟风弄月] 魔戒·指环王 5[吟风弄月] 古典音乐 5[吟风弄月] 国学 5[吟风弄月] 心理 5[吟风弄月] 我的第一次 5[吟风弄月] 奇幻 5[吟风弄月] 单身公寓 5[吟风弄月] 职业生涯 5[吟风弄月] 神仙话对联 5[吟风弄月] 牢骚天堂 5[吟风弄月] 一生所爱 5[吟风弄月] 华夏衣冠 5[吟风弄月] 原创 5[吟风弄月] 海外学人 5[吟风弄月] Very Taiwan Very Top 5[吟风弄月] 语种天堂 5[吟风弄月] 摇了就滚 5[吟风弄月] 流行音乐 5[吟风弄月] 圣斗士 5[吟风弄月] 钢铁长龙 5[吟风弄月] 猜灯谜 5[吟风弄月] 音乐知识与乐谱 5[吟风弄月] 现代诗歌 5[吟风弄月] 三晋文化交流协会 5[吟风弄月] 幽静桃源 5[吟风弄月] 幽静桃源版面 5[吟风弄月] 考古爱好者 5[吟风弄月] 原创音乐 5[吟风弄月] 风月睡美人 5[吟风弄月] 神话传说 9[大圣取经] 文科申请 9[大圣取经] 材料核能 9[大圣取经] 化学化工 9[大圣取经] 土水学院 9[大圣取经] 机械志途 9[大圣取经] 信息学院 9[大圣取经] 经世济民 9[大圣取经] 钱途无量 9[大圣取经] 数理学部 9[大圣取经] 生物医学 9[大圣取经] 电机工程 9[大圣取经] 量子化学计算 9[大圣取经] 建筑与规划 9[大圣取经] 工商管理 9[大圣取经] 高分子 9[大圣取经] 微机电系统 9[大圣取经] 航空航天 4[游戏人生] 星际争霸 4[游戏人生] 游戏大话 4[游戏人生] 英雄无敌 4[游戏人生] 模拟宝盒 4[游戏人生] 暗黑交易 4[游戏人生] 暗黑英雄 4[游戏人生] 暗黑地狱 4[游戏人生] 星空战斗鸡竞技场 4[游戏人生] 反恐精英 4[游戏人生] 魔力与WOW俱乐部 4[游戏人生] 视频游戏 4[游戏人生] 暗黑拍卖 4[游戏人生] 魔兽争霸 4[游戏人生] 魔兽世界 4[游戏人生] 暗黑北大版 4[游戏人生] 暗黑北大交易版 4[游戏人生] 暗黑北大HC版 4[游戏人生] 反恐精英HT站队 4[游戏人生] 石器时代 4[游戏人生] 暗黑异次元 4[游戏人生] 技术原理 4[游戏人生] 物品装备 4[游戏人生] 角色战术 4[游戏人生] 婉兮清扬 4[游戏人生] 暗黑技术 4[游戏人生] 暗黑技术 4[游戏人生] 在线足球游戏 4[游戏人生] 情迷暗黑 4[游戏人生] 帝国时代 4[游戏人生] 网络游戏 4[游戏人生] 视频游戏攻略区 4[游戏人生] 魔兽世界YTHT工会 4[游戏人生] 凯恩酒馆 4[游戏人生] 我爱我家 4[游戏人生] 我爱我家 4[游戏人生] PvP组队 4[游戏人生] 副本积分 4[游戏人生] wowPvP 4[游戏人生] 大副本 4[游戏人生] 满江红 4[游戏人生] 丢番茄 4[游戏人生] 金戈荡寇 4[游戏人生] 太阳井 4[游戏人生] 海加尔本部 4[游戏人生] 技术 4[游戏人生] 技术坦克 4[游戏人生] wow 4[游戏人生] 台服-奧妮克希亞 4[游戏人生] CWLK 4[游戏人生] 开荒 4[游戏人生] 请假 4[游戏人生] 公会临时会议室 4[游戏人生] 大坏蛋 1[大话西游] 大话西游 1[大话西游] .NET计划 1[大话西游] 大菠萝服务器 1[大话西游] 没有隐私与安全的世界 1[大话西游] 旧软集散地 1[大话西游] 阿卡直通车 1[大话西游] ANSI艺术家 1[大话西游] ascii俱乐部 1[大话西游] 打造Linux实作 1[大话西游] zixia的家 1[大话西游] 福布斯俱乐部 1[大话西游] 存储 1[大话西游] 火腿一组 1[大话西游] 手机短信SP 1[大话西游] 可支持万人在线的WWW论坛 1[大话西游] WMail企业电子邮局系统 1[大话西游] 分布式社区开发 1[大话西游] 分布式社区开发 1[大话西游] C++程序设计语言 1[大话西游] 天文 1[大话西游] 网站开发 1[大话西游] 数学工具 1[大话西游] Emacs编辑器 1[大话西游] TeX和LaTeX 1[大话西游] VIM 编辑器 1[大话西游] C程序设计语言 1[大话西游] Linux 1[大话西游] 医学成像 1[大话西游] 控制理论与应用 1[大话西游] 通信技术 1[大话西游] Java技术 1[大话西游] 电力技术 1[大话西游] 数值计算 1[大话西游] 地理 1[大话西游] 科学技术版务讨论区 1[大话西游] Perl的世界 1[大话西游] 人工智能 1[大话西游] VisualBasic程序设计 1[大话西游] BBS开发讨论 1[大话西游] 虚拟现实与三维技术 1[大话西游] 电脑硬件 1[大话西游] 电路调试 1[大话西游] 语言和编译器 1[大话西游] TODO_List 1[大话西游] zixia的福妹 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null ```
huan commented 3 years ago

boardheader.BM

bbs@bbs:~/tmp/convert$ wc -l < dotboards.bm.txt
835
bbs@bbs:~/tmp/convert$ cat dotboards.bm.txt ```sh SYSOP SuperMM SYSOP SuperMM ZhuTou SYSOPS SuperMM shanyaodong dextercuocuo smthcat SYSOPS SYSOPS SYSOP SYSOPS SYSOPS SYSOPS SYSOPS zixia zixia gagaz SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS ioo BMW flyingnymph SYSOPS SYSOPS sunyan SYSOPS SYSOPS netterm sfcat boryzoo tbao SYSOPS SYSOPS SYSOPS lizhi SYSOPS SYSOPS Apollo ioo panjin SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS myeyes skategg SYSOPS SYSOPS sunndy zool SYSOPS dadudu SIAM SYSOPS SYSOPS deer SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS michealr SYSOPS SYSOPS windtear SYSOPS SYSOPS sohease jessicazjc1 SYSOPS SYSOPS cacophony gho Killua zpzyyzp puthia gerrard hohohaha if sisternanny duckulla SYSOPS SYSOPS jessicazjc1 pig19830403 ly1 xiaoyu2 sleepyboy billye thr apawpaw SYSOPS SYSOPS SYSOPS bite asamy long6 bite SYSOPS SYSOPS Cecily SillySnail landice bluesolo peccary waterapple SYSOPS bite superbow SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS bystander SYSOPS SYSOPS icesky rosie SYSOPS NGHONG Amote SYSOPS FlySmile SYSOPS komuro mildhana SYSOPS SYSOPS SYSOPS SYSOPS xiaozefang giftone soco SYSOPS banana anderew wasteland sfcat flyingnymph bluechina SYSOPS SYSOPS Madrid SYSOPS SYSOPS haigu leonix aurelius liszt SYSOPS SYSOPS xiaoyuer Drizzle SYSOPS 诚征版主中 birby SYSOPS SYSOPS suise eyewind moonbird mars00 happyli SYSOPS liu FrostMaple SYSOPS Pillar SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS Killua clear enki langui Fengren zhoujun jiayun SYSOPS SYSOPS baoai yanxiao zin recky SYSOPS kingill miwang SaYoNaLa sadpacific coolkyx SYSOPS DrizzleWolf sohease XiaoFeng ppiigg B6oy ruoxi abharry ddt SYSOPS SYSOPS SYSOPS sulam enki asamy zxc redair MalenLei peccary cibtty SYSOPS greenlemon listforangel Tian00 SYSOPS SYSOPS xiaoxiao dolphinshy shu1084 sellymoon VampireJax Belladonna SYSOPS waye aliencat liusu SYSOPS SYSOPS SYSOPS SYSOPS cranedance tc2003 SYSOPS SYSOPS SYSOPS SYSOPS hehej liuwb johnbird jar SYSOPS NUN0 zlyric visitor wwang SYSOPS msconfig kikia ypbxzyh SYSOPS dongz redstar hellolyn1020 SYSOPS SYSOPS SYSOPS SYSOPS fengniao light2001 liuxn lefantome thirdpluto SYSOPS SYSOPS SYSOPS windwings SYSOPS SYSOP flyriver birby SYSOPS mikelsl asing pkuthu Gonzalez Siemensboy solar SYSOPS snowblood xinghe sfcat viliana Distiller thickfog SYSOPS shellxp hohohaha robi shuer tupelo jackduck ofey dextercuocuo msconfig takugun jessicazjc1 SYSOPS chongzi seamountain circler glory finalss tsio starmoonh SYSOPS sleepingfish coson haiyi annals yxx keepfit SYSOPS SYSOP SYSOP SYSOP SYSOP flyingdove xylz SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP SYSOP threeseven nocome student SYSOP zixia Durex SYSOPS realricky SIAM SYSOPS nezha waxlight SYSOPS SYSOP SYSOPS SYSOPS SYSOPS SYSOP SYSOPS SYSOPS gatusso cricket SYSOPS SYSOPS xiaolou SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS raymonddy SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS lnlnln SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS liujg SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS Californian snowflake SYSOPS fnj SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS IceBlade erfreut lotusson smalll SYSOPS SYSOPS SYSOPS SYSOPS circler SYSOPS circler circler SYSOPS mALdInI oliviawei ccer SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS Linux Security Kernel Mail List Czz zixia SuperMM Leeds cryingfish SYSOPS wiseboy SYSOPS SYSOPS SYSOPS PretendToBe businiao4 kurt9 SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS Diametre newsmth cinder gagaz suise drifter SYSOPS SYSOPS leokung SYSOPS SYSOPS air1 starrydx Angler SYSOPS SYSOPS deer AmazonQueen SYSOPS Apollo Athena csome Farocean SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS Farocean SYSOPS SYSOPS chipda chipda SYSOPS SYSOPS SYSOPS AmazonQueen SYSOPS Jacqueline singdawn SYSOPS SYSOPS wwang mmruby SYSOPS SYSOPS SYSOPS xiaoxiao FrostMaple SYSOPS wwang sohease SYSOPS SYSOPS ahwa Distiller SYSOPS SYSOPS halfy Atropos SYSOPS SYSOPS luture SYSOPS Shinji yaboo xiaoyu2 SYSOPS deer sunstand lierking Kevin6 SYSOPS AmazonQueen SYSOPS wly vieri SYSOPS whiteice SYSOPS supercm zhj SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS blome SYSOPS SYSOPS michealr coldback breeze SYSOPS aerith prynne Hakkk SYSOPS SYSOPS SYSOPS lbfish Ksharp mouse435500 SYSOPS zixia long6 buga Godnessmm Sanzerithy mmruby smthcat ohye renyingying SYSOPS SYSOPS honni bluwater eric228 PLAer nobel pythias SYSOPS dwd SYSOPS neverever lcn November SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS richarddream landice SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS DreamToTrue SYSOPS SYSOPS SYSOPS windtear RongRong SYSOPS SYSOPS SYSOPS zixia Forbes CIE zixia zixia zixia atppp SYSOPS Kwafu SYSOPS kilostar chandra buga SYSOPS SYSOPS crazycool SYSOPS edyfox cjrf SerpentMutu 操作系统 smalll shakey Apollo zms rhymy tune kangaroo blueso SYSOPS chaoslawful SYSOPS henryl cnbird protein SYSOPS SYSOPS SYSOPS zixia SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS SYSOPS ```
huan commented 3 years ago

boardheader.filename

bbs@bbs:~/tmp/convert$ wc -l < dotboards.path.txt 
835
bbs@bbs:~/tmp/convert$ cat dotboards.path.txt ```sh sysop Announce vote Manager INeed FAQ test Discontentment Advice newcomers.bak BBShelp ZTapply Altar GoblinList Service AKA_Inc. gagaz_room newcomers WoW_GOT PPShow noSPAM_Book THU.TP Zixia_Celebration CelebrationManage XiangCheng THU.IC06 THU.DPS Filter InvestmentClub msconfig THU.LOGIS THU.DEEAET23 THU.DPIM.J14 THU.DEEAET02 Caltech THU.DPIM.JS62 ChaosWar 29BBS zixia_invest THU.BME2006 SalsaClub THU.DESE THU.DESE82 THU.GW11 AoF Highseat HR_Office OfficeHR OfficeDr Office_HR Office_Raid Darnassus O_Raid Sunwell sun Warrior Paladin Shaman Hunter Rogue Druid Priest Mage Warlock DeathKnight MeetingRoom1 KaiXin 17Salsa WOW_Cycle MeetingRoom2 long6Bar youkai Loser ZixiaInvest_Club NewAge Core General Guild_HR Dawn ColightAsset DiabloIII WOWZixiaGuild Diablo2 Island Production Reader Welan JapanCiv Literature Astrology Creativity Fiction HearAbout Insurance Actuary Business House STOCK Law NoteBook HAC yynbclub Stock_ZXIF PieBridge CompMarket Shopping AimGraduate Career Entrepreneur Occupier CloverClub 7Club Secondhand ParttimeJob realestate BurnCD FinancialLife DigiImage DrivingStudy PDA vichyclub CampusInfo Trafficinfo YinShop ADAgents ADAgent drowsroom QiXiaoFu Mixed-pie Fashion Birthday Dance food Joke photo Guitar MovieTV Mud football Travelling Billiards Picture Communication comic JackyCheung 8Gua Japan_Idol Milan Tabletennis Revenge DV Skate BasketballLive PetsEden SkiWorld 3Amanager FootballFans swimming Inter ManUtd TVGame fitnessworld Cyclone Blessing SuperStars Trekking keepfit Children disco MayDay tennis SMTH_TSHIRT Gundam Juventus Runninglife WakinChau Baseball chess weiqi XiangQi Basketball Badminton_Club Badminton L_Arc_en_Ciel Paragliding Combat HUST THU ZJU PKU.CHEM THU.DME84 THU.HOT9 THU.SHSS9 THU.DA THU.JC ZSU SJTU USTC THU.cllab THU.English8 TJU PKU THU.29# THU.English01 SH.itp01 SJZ.class8 PKU.BMS97 CTSZ.97 THU.DTE73 SCUT THU.DEM92 THU.English9 THU.FMFE6 NKU NJU FUDAN BeiJing ShangHai ShenZhen SuZhou XJTU SXLFYZ.234 ACG_Club THU.RD92 THU.DTE93 BUAA BigFour THU.RE7 THU.BME8 THU.DCE71 THU.SHSS00 THU.BME2000 THU.NEW9 THU.ChaoShan THU.IE13 XY.171 THU.BME2002 THU.BME2001 THU.N01 SM_DV THU.RE8 THU.DEEAET82 wms.20 THU.DEM01 THU.DIE03 DramaTogether THU.CHEMStudentUnion ROC THU.CLC01 THU.SHSS01 THU.BME2003 THU.BME99 THU.CM1 WenYuan THU.SHSSMA1 THU.DME13 THU.IEG04 THU.SHSS03 THU.DIE0 THU.SOC THU.SLS THU.DEEAET12 THU.DEEAET11 THU.DMEDZB2 THU.DMEYAN21 FZYZ.G39 THU.DMEYAN13 THU.DME11 THU.28# THU.DME04 THU.DME12 THU.DMEbadminton THU.DME22 THU.DIE12 THU.DME21 THU.DEEAET04 THU.SZGY1 THU.DMEDZB1 BMTest17 BIT THHighSchool BNU THU.DEEAET81 THU.DEEAET14 Private ClubTest BaoBaoWu snow_club C13 Sports kika_room SF.life OverseaClub StockClub THU.DPgraduate THU.DME83 SZZX.97 F5 WritingClub THU.SPPM circler THU.DPIM.YY THU.HOT0 THU.DEM02 SMTH THU.DEM THU. THU.DEP. THU.AUTO. THU.BME. THU.GW92 THU.DCS. THU.SHSS. THU.DA. THU.DEEAET. THU.DC. THU.DEM. THU.DIE. THU.DME. THU.DP. THU.DPIM. THU.DTE. THU.SJC. THU.SPPM. THU.SZ. HighSchools THAssociations Original_Club Campus PKU. ZJU. THU.DEEAET03 THU.DCE. HuiLongGuan THU.Civil94 THU.DPIM.J16 THU.DMS. THU.DMS THU.DEEAET91 THU.DPIM.Y12 USTC.0110 USTC. THU.DTE12 Yonghen THU.DCE83 SWUFE. THU.DCS12 THU.EEAtuanwei THU.PL8 THU.AUTO23 THU.DCE82 THU.DCE81 OtherBBS. Massachusetts NewYork Texas Georgia Pennsylvania NorthAtlantic Carolina SouthAtlantic SouthCentral Pacific Mountain GreatPlain GreatLakes Princeton Stanford Noffer ExceptUSA Canada EnglishBar GoAbroad UIUC Singapore France Russia Japan Deutschland Visa HongKong United_Kingdom SouthCA NorthCA IWantToFly Yesterday NYU UR UMCP JHU Minnesota Columbia Cornell StonyBrook Chicago Toronto Quebec UBC UTAustin Berkeley USC Australia UK_club RPI OSU Wisconsin UToronto AdvancedEdu GRE Yale 6Club EnglishTest School Purdue U.S.A Country Umich PieAbroad Virginia MSU Italy BUGTRAQ Anaconda LinuxSecurity LinuxKernel cn.bbs.admin cn.bbs.announce cn.bbs.list XiaMen Anhui Harbin TianJin Hunan Shandong Guangxi Guangdong Guizhou NorthEast ZheJiang NanJing ShenYang Henan GuangZhou ChengDu ChongQing QingDao WuHan DaLian fairydream heart TeenSpirit Wisdom Bar ChineseMusic boy Graduate Water FamilyLife Memory WeAreFamily Bible Spring Korea Beauty SF Sanguo History Auto Marvel EnglishPoetry KinderGarten Emprise StoneStory Art ClassicPoem MartialArts 5Club Classic_Culture LordoftheRings ClassicalMusic GuoXue Mentality FirstTime fantasy Single WorkLife Couplet Hate Love HuaXiaYiGuan Original Oversea island LangHeaven RockNRoll PopMusic SaintSeiya Railway Riddle MusicScore ModernPoetry Sjculture SecretGarden Garden_Board Reliclover OriginalMusic SleepingBeauty MythLegend Arts Material Chem Civil Mech EECS EconBiz Profession Math_Physics Bio_Medi EEA_Apply Gaussian ArchPlanning MBA Polymer MEMS Aero StarCraft Game Heroes Emulator D2Trade D2HC D2hell FightChick CS Crossgate PS2 D2Auction WarCraft3 WorldofWarcraft D2PKUREALM D2PKUtrade D2PKUHC CS_HTteam Stoneage D2mod D2Inside D2Item D2Strategy SMTHRO D2-Tech D2Tech WebSoccerGame D2LEGEND AOE onlinegame TVGameGuide WOW_YTHT D2PVP Guild [Guild] 4.Arena [Raid] wowPvP Raid Battleground Tomato BattleGround Sun Hyjal Tech Tech_Tank wow TWoW-Onyxia CWLK FirstDown Raid_Tomato Guild_MTR BigBadBoy zixia.net dotNET D2Server Security Warez PersonalVPN ASCIIArt ascii_club zixia_linux zixia_house Forbes Storage Ham SMS wForum wMail p2pBBSDev p2pBBS CPlusPlus Astronomy WebDev MathTools Emacs TeX VIM CProgramming Linux MedImaging Control CommTech Java PowerTech NumComputation Geography 1Club Perl AI VisualBasic BBSDev VR_3D Hardware Circuit Compiler zixia_TODO Car 0000 2.Trade 3.Look4Group 4Club Admin_2 AKA AKA_Hell AKA_Log AKA_Sales AKA_Tech AmazonTribe AMD AndyLau AprilFool art_room asing_room BadmintonSHSS Billybala BME.DV BUG busyTest C1006 CandyPig cat333 CB ceshi Chaoswar_temp cherryzl_fan CIE_Ferrarl CIE_Forbes--2 CIE_Seeker City_Hall ColightAMC control coreSearch CoxswainElection0 CoxswainElection1 CoxswainElection2 CoxswainElection3 CoxswainElection4 CoxswainElection5 CoxswainElection6 CoxswainElection7 CoxswainElection8 CoxswainElection9 CrystalPalace Dartmouth DBSDFZ.199738 Decrypt_Youkai deer denypost DiabloII Digest DvdZone DzHome ExpLists Family_Club fly_badminton GalGame Gambling GirlBoy GiveMe GiveupNotice Goodbye GuildOffice GuiZi heaven HordeYTHT_bank HordeYTHT_Discipline HordeYTHT_HR HordeYTHT_raid hqingxia_szixia ICanFly installbbs JiangSu JJ Job_Info junk kill kkHome KunMing LF_38 Lidia LineageII LuanShi Lyh MeetingRoom3 MeetingRoom4 Music N39E121 NanKai nantong NanTong Nantong2 neon NetResources NingBo noSPAM notepad O_Darnassus O_HR OGameASheep OgameGOT Ontario pig2532 Pigapple piggy piggy1 PigPig PixelArt PvP Raid_FD Real_Estate Registry Rutgers Sexology SFClub SFclubtest SITP05 SJTU.MCE2005 SMSGW SMTHDev Spacial_Science stock_warrant SUPERDB SuperMM SYEZ.154 syssecurity szixia_raid TAMU TBC tbc_ae TestVote THU.AUTO3 THU.BME2_DV THU.BME2002.DV THU.BME2004 THU.BME2005 THU.CICS THU.Civil93 THU.DEEAET01 THU.DEEAET13 THU.DEEAET24 THU.DIE05 THU.DIE11 THU.DIE22 THU.DME73 THU.DME81 THU.DMEYAN22 THU.DP1 THU.DPIM.J24 THU.DPIM.J25 THU.DPIM.J26 THU.DPIM.JS51 THU.DPIM.JS52 THU.DPIMZ61 THU.English12B THU.GW02 THU.H02 THU.IC05 THU.IE21 THU.IEStuOrg THU.Medicine01 THU.MSExpress THU.RD71 thu.sf_club THU.sf_club THU.SPPM05 tianping tRYiT undenypost Utopia VPN WarGame WaterRoom wawawa WebDesign wipe wMail_Talker WoW WOW_CC WOW_potato WOW_Potato WOW_potato_7749 WOW_SnowBlade WOW_XSXQBank WOW_XSXQBigFamily WOW_XSXQBus WOW_XSXQDiscipline WOW_XSXQHighSeat WOW_XSXQNewComer WOW_XSXQRaid WOW_XSXQRaidDKP WOW_YTHTCLOSED X_SYSOP XiAn YangZhou YTHT_BANK YTHT_Bulletin YTHT_Committee YTHT_Council YTHT_Crafts YTHT_DKP YTHT_Guild YTHT_HR YTHT_PIONEER YTHT_RAID YTHTAlliance ZhuTou zixia_biz zixia_room ZJU.BE01 ```
huan commented 3 years ago

C Code for rebuild .BOARDS

We did it!

bbs@bbs:~/tmp/convert$ strings ~/.BOARDS
sysop
SYSOP
SYSOP
Announce
SuperMM
...
bbs@bbs:~/tmp/convert$ cat board.c ```c #include #include #include #include #define MAXBOARD 2048 #define STRLEN 80 #define BM_LEN 60 #define PERM_SYSOP 040000 struct boardheader { char filename[STRLEN]; /* the BOARDS files */ char BM[BM_LEN]; char title[STRLEN]; unsigned level; // level设成PERM_SYSOP. unsigned int idseq; // idseq就是1自增的数应该就可以 unsigned int clubnum; /*如果是俱乐部,这个是俱乐部序号*/ unsigned int flag; union { unsigned int adv_club; /* 用于指定club对应关系,0表示没有,1表示序号*/ unsigned int group_total; /*如果是二级目录,应该是目录的版面总数*/ } board_data; time_t createtime; // createtime写现在 /* int toptitle; move to board status */ unsigned int score_level; char ann_path[128]; // ann_path是0Announce/groups下的版面精华区相对路径 int group; /*所属目录*/ char title_level; /* 设定用户需要什么title可见这个版面*/ char des[195]; /*版面描述,用于www的版面说明和search */ }; int main(int argc , char* argv[]) { FILE *fpPath; FILE *fpBm; FILE *fpName; FILE *fpAnn; struct boardheader bh; int i; int count; count = 0; char *dotBOARDS = "BOARDS"; if((fpPath = fopen("dotboards.path.txt", "r")) == NULL) { printf("open path file failed!"); return 0; } if((fpBm = fopen("dotboards.bm.txt", "r")) == NULL) { printf("open bm file failed!"); return 0; } if((fpName = fopen("dotboards.name.txt", "r")) == NULL) { printf("open name file failed!"); return 0; } if((fpAnn = fopen("dotboards.ann.txt", "r")) == NULL) { printf("open ann file failed!"); return 0; } FILE *fp; if((fp = fopen(dotBOARDS,"w")) == NULL) { printf("cant create newboards file!"); exit(0); } char lineName[MAXBOARD][256]; char lineBm[MAXBOARD][256]; char linePath[MAXBOARD][256]; char lineAnn[MAXBOARD][256]; char line[256]; for (i=0; i
huan commented 3 years ago

Generate ann

find /bbs/0Announce/groups/ -maxdepth 2 > ann.txt
for b in $(cat dotboards.path.txt); do echo $(grep "/$b$" ann.txt | head -1); done 
huan commented 3 years ago

Restored!

We rebuilt .BOARDS succeed on Jan 25, 2021!

image

image

image

image

image

image

huan commented 3 years ago

Close this issue because it seems that our boards work great now!

Really thank all the efforts from @realkcn, appreciate it!