| 1 | #!/bin/sh |
|---|
| 2 | # |
|---|
| 3 | # written by conon <troll@logi.net.au> |
|---|
| 4 | # |
|---|
| 5 | # This script is intended to be run before starting licq |
|---|
| 6 | # It prepares the directory and users setups to that of a |
|---|
| 7 | # current centericq setup |
|---|
| 8 | # just run the script and it will do it all |
|---|
| 9 | # |
|---|
| 10 | |
|---|
| 11 | test "${1}" && test "${1}" == "-t" -o "${1}" == "-T" && TESTING="-b .licq" |
|---|
| 12 | |
|---|
| 13 | if test "$TESTING" |
|---|
| 14 | then |
|---|
| 15 | LICQ_DIR=.licq |
|---|
| 16 | CENTER_DIR=.centericq |
|---|
| 17 | else |
|---|
| 18 | LICQ_DIR=~/.licq |
|---|
| 19 | CENTER_DIR=~/.centericq |
|---|
| 20 | fi |
|---|
| 21 | |
|---|
| 22 | LICQ_USER_DIR=${LICQ_DIR}/users |
|---|
| 23 | LICQ_HISTORY_DIR=${LICQ_DIR}/history |
|---|
| 24 | LICQ_CONF=${LICQ_DIR}/licq.conf |
|---|
| 25 | LICQ_OWNER=${LICQ_DIR}/owner.uin |
|---|
| 26 | LICQ_QT_GUI=${LICQ_DIR}/licq_qt-gui.conf |
|---|
| 27 | LICQ_USERS=${LICQ_DIR}/users.conf |
|---|
| 28 | OWNER_HISTORY=${LICQ_HISTORY_DIR}/owner.history |
|---|
| 29 | |
|---|
| 30 | CENTER_RC=${CENTER_DIR}/config |
|---|
| 31 | CENTER_MODES=${CENTER_DIR}/modelist |
|---|
| 32 | |
|---|
| 33 | C_UIN="icq_uin" |
|---|
| 34 | L_UIN="Uin" |
|---|
| 35 | UIN="" |
|---|
| 36 | C_PASSWORD="icq_pass" |
|---|
| 37 | L_PASSWORD="Password" |
|---|
| 38 | PASSWORD="" |
|---|
| 39 | C_SERVER="icq_server" |
|---|
| 40 | L_SERVER="ICQServer" |
|---|
| 41 | SERVER="" |
|---|
| 42 | C_SERVER_PORT="" |
|---|
| 43 | L_SERVER_PORT="Port" |
|---|
| 44 | SERVER_PORT="" |
|---|
| 45 | |
|---|
| 46 | function read_centericq_conf () |
|---|
| 47 | { |
|---|
| 48 | local INBASE |
|---|
| 49 | local INREST |
|---|
| 50 | while read INBASE INREST |
|---|
| 51 | do |
|---|
| 52 | case ${INBASE} |
|---|
| 53 | in |
|---|
| 54 | $C_UIN) UIN=${INREST};; |
|---|
| 55 | $C_PASSWORD) PASSWORD=${INREST};; |
|---|
| 56 | $C_SERVER) SERVER=${INREST%%':'*} |
|---|
| 57 | SERVER_PORT=${INREST##*':'};; |
|---|
| 58 | esac |
|---|
| 59 | done |
|---|
| 60 | } |
|---|
| 61 | |
|---|
| 62 | function out_licq_conf () |
|---|
| 63 | { |
|---|
| 64 | local INSTUFF |
|---|
| 65 | local INBASE |
|---|
| 66 | local INREST |
|---|
| 67 | while read INSTUFF |
|---|
| 68 | do |
|---|
| 69 | INBASE=${INSTUFF%%'='*} |
|---|
| 70 | INBASE=${INSTUFF%%' '*} |
|---|
| 71 | INREST=${INSTUFF##*'='} |
|---|
| 72 | INREST=${INSTUFF##*' '} |
|---|
| 73 | case $INBASE |
|---|
| 74 | in |
|---|
| 75 | L_SERVER) echo "${INBASE} = ${SERVER}";; |
|---|
| 76 | L_PORT) echo "${INBASE} = ${SERVER_PORT}";; |
|---|
| 77 | *) echo "${INSTUFF}";; |
|---|
| 78 | esac |
|---|
| 79 | done |
|---|
| 80 | } |
|---|
| 81 | |
|---|
| 82 | function out_owner_uin () |
|---|
| 83 | { |
|---|
| 84 | local INSTUFF |
|---|
| 85 | local INBASE |
|---|
| 86 | local INREST |
|---|
| 87 | while read INSTUFF |
|---|
| 88 | do |
|---|
| 89 | INBASE=${INSTUFF%%'='*} |
|---|
| 90 | INBASE=${INSTUFF%%' '*} |
|---|
| 91 | INREST=${INSTUFF##*'='} |
|---|
| 92 | INREST=${INSTUFF##*' '} |
|---|
| 93 | case $INBASE |
|---|
| 94 | in |
|---|
| 95 | "History") echo "${INBASE} = ${OWNER_HISTORY}";; |
|---|
| 96 | ${L_PASSWORD}) echo "${INBASE} = ${PASSWORD}";; |
|---|
| 97 | ${L_UIN}) echo "${INBASE} = ${UIN}";; |
|---|
| 98 | *) echo "${INSTUFF}";; |
|---|
| 99 | esac |
|---|
| 100 | done |
|---|
| 101 | } |
|---|
| 102 | |
|---|
| 103 | declare -a CONTACTS |
|---|
| 104 | CONTACT_COUNT=0 |
|---|
| 105 | |
|---|
| 106 | function test_mv () |
|---|
| 107 | { |
|---|
| 108 | if test -e ${1}.new |
|---|
| 109 | then |
|---|
| 110 | test -e ${1} && mv ${1} ${1}.orig |
|---|
| 111 | mv ${1}.new ${1} |
|---|
| 112 | fi |
|---|
| 113 | } |
|---|
| 114 | |
|---|
| 115 | declare -a USER_DETAIL |
|---|
| 116 | USER_DETAILS=0 |
|---|
| 117 | |
|---|
| 118 | function parse_info () |
|---|
| 119 | { |
|---|
| 120 | USER_DETAILS=0 |
|---|
| 121 | while read USER_DETAIL[${USER_DETAILS}] |
|---|
| 122 | do |
|---|
| 123 | let USER_DETAILS+=1 |
|---|
| 124 | done |
|---|
| 125 | } |
|---|
| 126 | |
|---|
| 127 | NEW_USER=0 |
|---|
| 128 | function user_mode () |
|---|
| 129 | { |
|---|
| 130 | local mode=0 |
|---|
| 131 | local name="" |
|---|
| 132 | local uin="" |
|---|
| 133 | local IGNORE=0 |
|---|
| 134 | local VISIBLE=0 |
|---|
| 135 | local INVISIBLE=0 |
|---|
| 136 | while read mode name uin |
|---|
| 137 | do |
|---|
| 138 | if test "${name}" == "${1}" -o "${uin}" == "${1}" |
|---|
| 139 | then |
|---|
| 140 | case ${mode} |
|---|
| 141 | in |
|---|
| 142 | "1") IGNORE=8;; |
|---|
| 143 | "2") VISIBLE=2;; |
|---|
| 144 | "3") INVISIBLE=4;; |
|---|
| 145 | esac |
|---|
| 146 | fi |
|---|
| 147 | done |
|---|
| 148 | let mode=${IGNORE} |
|---|
| 149 | let mode+=${VISIBLE} |
|---|
| 150 | let mode+=${INVISIBLE} |
|---|
| 151 | echo ${mode} |
|---|
| 152 | } |
|---|
| 153 | |
|---|
| 154 | function out_user_uin () |
|---|
| 155 | { |
|---|
| 156 | local SYSTEM_GROUPS=0 |
|---|
| 157 | SYSTEM_GROUPS=`user_mode ${1} <${CENTER_MODES}` |
|---|
| 158 | |
|---|
| 159 | cat <<-EOF |
|---|
| 160 | [user] |
|---|
| 161 | History = ${LICQ_HISTORY_DIR}/${1}.history |
|---|
| 162 | Groups.System = ${SYSTEM_GROUPS} |
|---|
| 163 | Groups.User = |
|---|
| 164 | Ip = |
|---|
| 165 | Port = |
|---|
| 166 | NewUser = ${NEW_USER} |
|---|
| 167 | NewMessages = |
|---|
| 168 | LastOnline = ${USER_DETAIL[46]} |
|---|
| 169 | Alias = ${USER_DETAIL[0]} |
|---|
| 170 | FirstName = ${USER_DETAIL[1]} |
|---|
| 171 | LastName = ${USER_DETAIL[2]} |
|---|
| 172 | Email1 = ${USER_DETAIL[5]} |
|---|
| 173 | Email2 = |
|---|
| 174 | City = ${USER_DETAIL[6]} |
|---|
| 175 | State = ${USER_DETAIL[7]} |
|---|
| 176 | PhoneNumber = ${USER_DETAIL[8]} |
|---|
| 177 | FaxNumber = ${USER_DETAIL[9]} |
|---|
| 178 | Address = ${USER_DETAIL[10]} |
|---|
| 179 | CellularNumber = ${USER_DETAIL[11]} |
|---|
| 180 | Zipcode = ${USER_DETAIL[12]} |
|---|
| 181 | Country = ${USER_DETAIL[13]} |
|---|
| 182 | Timezone = |
|---|
| 183 | Authorization = |
|---|
| 184 | HideEmail = |
|---|
| 185 | Age = ${USER_DETAIL[26]} |
|---|
| 186 | Gender = ${USER_DETAIL[27]} |
|---|
| 187 | Homepage = ${USER_DETAIL[29]} |
|---|
| 188 | BirthYear = ${USER_DETAIL[34]} |
|---|
| 189 | BirthMonth = ${USER_DETAIL[33]} |
|---|
| 190 | BirthDay = ${USER_DETAIL[32]} |
|---|
| 191 | Language1 = |
|---|
| 192 | Language2 = |
|---|
| 193 | Language3 = |
|---|
| 194 | CompanyCity = ${USER_DETAIL[14]} |
|---|
| 195 | CompanyState = ${USER_DETAIL[15]} |
|---|
| 196 | CompanyPhoneNumber = ${USER_DETAIL[16]} |
|---|
| 197 | CompanyFaxNumber = ${USER_DETAIL[17]} |
|---|
| 198 | CompanyAddress = ${USER_DETAIL[18]} |
|---|
| 199 | CompanyName = ${USER_DETAIL[21]} |
|---|
| 200 | CompanyDepartment = ${USER_DETAIL[22]} |
|---|
| 201 | CompanyPosition = ${USER_DETAIL[23]} |
|---|
| 202 | CompanyHomepage = ${USER_DETAIL[25]} |
|---|
| 203 | EOF |
|---|
| 204 | } |
|---|
| 205 | |
|---|
| 206 | function parse_history_0 () |
|---|
| 207 | { |
|---|
| 208 | true |
|---|
| 209 | } |
|---|
| 210 | |
|---|
| 211 | function parse_history () |
|---|
| 212 | { |
|---|
| 213 | local INSTUFF |
|---|
| 214 | local LINE_COUNT=0 |
|---|
| 215 | local INMESG=false |
|---|
| 216 | local MESSAGE="" |
|---|
| 217 | local CDIR="R" |
|---|
| 218 | local CMND="" |
|---|
| 219 | local TIME="" |
|---|
| 220 | local TESTY="\014" |
|---|
| 221 | local URL="" |
|---|
| 222 | |
|---|
| 223 | #read -r INSTUFF |
|---|
| 224 | while read -r INSTUFF |
|---|
| 225 | do |
|---|
| 226 | INSTUFF=`echo ${INSTUFF} |tr -d "\f\r"` |
|---|
| 227 | if ! test "${INSTUFF}" && ${INMESG} |
|---|
| 228 | then |
|---|
| 229 | echo -e "[ ${CDIR} | ${SUBCMD} | 2046 | 0001 | ${TIME} ]" |
|---|
| 230 | echo -en "${MESSAGE}" |
|---|
| 231 | test "${URL}" && echo -en "${URL}" |
|---|
| 232 | INMESG=false |
|---|
| 233 | LINE_COUNT=0 |
|---|
| 234 | MESSAGE="" |
|---|
| 235 | URL="" |
|---|
| 236 | fi |
|---|
| 237 | test "${INSTUFF}" && INMESG=true |
|---|
| 238 | case ${LINE_COUNT} |
|---|
| 239 | in |
|---|
| 240 | "0") if test "${INSTUFF}" == "OUT" |
|---|
| 241 | then |
|---|
| 242 | CDIR="S" |
|---|
| 243 | else |
|---|
| 244 | CDIR="R" |
|---|
| 245 | fi;; |
|---|
| 246 | "1") SUBCMD="${INSTUFF}";; |
|---|
| 247 | "2") TIME="${INSTUFF}";; |
|---|
| 248 | "3") true;; |
|---|
| 249 | "4") case "$SUBCMD" |
|---|
| 250 | in |
|---|
| 251 | "AUTH") if test "${INSTUFF}" == "1" |
|---|
| 252 | then |
|---|
| 253 | SUBCMD="0008" |
|---|
| 254 | else |
|---|
| 255 | SUBCMD="0007" |
|---|
| 256 | fi;; |
|---|
| 257 | "URL") URL=":${INSTUFF}" |
|---|
| 258 | SUBCMD="0004";; |
|---|
| 259 | *) MESSAGE="${MESSAGE}:${INSTUFF}\n" |
|---|
| 260 | SUBCMD="0001";; |
|---|
| 261 | esac;; |
|---|
| 262 | *) MESSAGE="${MESSAGE}:${INSTUFF}\n";; |
|---|
| 263 | esac |
|---|
| 264 | test "${INSTUFF}" && let LINE_COUNT+=1 |
|---|
| 265 | done |
|---|
| 266 | } |
|---|
| 267 | |
|---|
| 268 | function parse_contacts () |
|---|
| 269 | { |
|---|
| 270 | local UIN |
|---|
| 271 | for DIR in ${CENTER_DIR}/*/ |
|---|
| 272 | do |
|---|
| 273 | UIN=${DIR%*'/'} |
|---|
| 274 | UIN=${UIN##${CENTER_DIR}/} |
|---|
| 275 | test "$UIN" == "0" && continue |
|---|
| 276 | CONTACTS[${CONTACT_COUNT}]="${UIN}" |
|---|
| 277 | let CONTACT_COUNT+=1 |
|---|
| 278 | if test -e ${DIR}/history |
|---|
| 279 | then |
|---|
| 280 | parse_history <${DIR}/history >${LICQ_HISTORY_DIR}/${UIN}.history |
|---|
| 281 | else |
|---|
| 282 | echo -n > ${LICQ_HISTORY_DIR}/${UIN}.history |
|---|
| 283 | fi |
|---|
| 284 | if test -e ${DIR}/info |
|---|
| 285 | then |
|---|
| 286 | parse_info <${DIR}/info |
|---|
| 287 | fi |
|---|
| 288 | out_user_uin ${UIN} >${LICQ_USER_DIR}/${UIN}.uin |
|---|
| 289 | done |
|---|
| 290 | } |
|---|
| 291 | |
|---|
| 292 | function out_users_conf () |
|---|
| 293 | { |
|---|
| 294 | local TMPCOUNT=0 |
|---|
| 295 | local TEMPCOUNT=1 |
|---|
| 296 | echo -e "[users]\nNumOfUsers = ${CONTACT_COUNT}" |
|---|
| 297 | while test ${TMPCOUNT} -lt ${CONTACT_COUNT} |
|---|
| 298 | do |
|---|
| 299 | echo "User${TEMPCOUNT} = ${CONTACTS[${TMPCOUNT}]}" |
|---|
| 300 | let TMPCOUNT+=1 |
|---|
| 301 | let TEMPCOUNT+=1 |
|---|
| 302 | done |
|---|
| 303 | } |
|---|
| 304 | |
|---|
| 305 | test -d ${LICQ_DIR} || licq ${TESTING} -I -h >/dev/null 2>&1 |
|---|
| 306 | if test -e ${CENTER_RC} -a ! -e ${LICQ_OWNER}.orig |
|---|
| 307 | then |
|---|
| 308 | read_centericq_conf < ${CENTER_RC} |
|---|
| 309 | if test -e ${LICQ_CONF} |
|---|
| 310 | then |
|---|
| 311 | out_licq_conf < ${LICQ_CONF} >${LICQ_CONF}.new |
|---|
| 312 | else |
|---|
| 313 | out_licq_conf >${LICQ_CONF}.new <<-EOF |
|---|
| 314 | [licq] |
|---|
| 315 | Version = 1020 |
|---|
| 316 | |
|---|
| 317 | [plugins] |
|---|
| 318 | NumPlugins = 1 |
|---|
| 319 | Plugin1 = qt-gui |
|---|
| 320 | |
|---|
| 321 | [network] |
|---|
| 322 | AllowNewUsers = 1 |
|---|
| 323 | NumOfICQServers = 1 |
|---|
| 324 | ICQServer = login.icq.com |
|---|
| 325 | ICQServerPort = 5190 |
|---|
| 326 | TCPPortsLow = 0 |
|---|
| 327 | TCPPortsHigh = 0 |
|---|
| 328 | TCPEnabled = 1 |
|---|
| 329 | MaxUsersPerPacket = 100 |
|---|
| 330 | IgnoreTypes = 0 |
|---|
| 331 | ForegroundColor = 0 |
|---|
| 332 | BackgroundColor = 16777215 |
|---|
| 333 | Errors = log.errors |
|---|
| 334 | ErrorTypes = 6 |
|---|
| 335 | Rejects = log.rejects |
|---|
| 336 | Translation = none |
|---|
| 337 | UrlViewer = viewurl-netscape.sh |
|---|
| 338 | Terminal = xterm -T Licq -e |
|---|
| 339 | ProxyEnabled = 0 |
|---|
| 340 | ProxyServerType = 1 |
|---|
| 341 | ProxyServer = |
|---|
| 342 | ProxyServerPort = 0 |
|---|
| 343 | ProxyAuthEnabled = 0 |
|---|
| 344 | ProxyLogin = |
|---|
| 345 | ProxyPassword = |
|---|
| 346 | UseSS = 0 |
|---|
| 347 | |
|---|
| 348 | [onevent] |
|---|
| 349 | Enable = 1 |
|---|
| 350 | Command = play |
|---|
| 351 | Message = /usr/share/licq/sounds/icq/Message.wav |
|---|
| 352 | Chat = /usr/share/licq/sounds/icq/Chat.wav |
|---|
| 353 | File = /usr/share/licq/sounds/icq/File.wav |
|---|
| 354 | Url = /usr/share/licq/sounds/icq/URL.wav |
|---|
| 355 | OnlineNotify = /usr/share/licq/sounds/icq/Notify.wav |
|---|
| 356 | SysMsg = /usr/share/licq/sounds/icq/System.wav |
|---|
| 357 | |
|---|
| 358 | [groups] |
|---|
| 359 | NumOfGroups = 3 |
|---|
| 360 | DefaultGroup = 0 |
|---|
| 361 | NewUserGroup = 1 |
|---|
| 362 | Group1.name = New Users |
|---|
| 363 | Group2.name = Friends |
|---|
| 364 | Group3.name = Family |
|---|
| 365 | Group1.id = 0 |
|---|
| 366 | Group2.id = 0 |
|---|
| 367 | Group3.id = 0 |
|---|
| 368 | EOF |
|---|
| 369 | fi |
|---|
| 370 | echo -n > ${OWNER_HISTORY} |
|---|
| 371 | # if test -e ${LICQ_OWNER} |
|---|
| 372 | # then |
|---|
| 373 | # out_owner_uin < ${LICQ_OWNER} >${LICQ_OWNER}.new |
|---|
| 374 | # else |
|---|
| 375 | out_owner_uin >${LICQ_OWNER}.new <<-EOF |
|---|
| 376 | [user] |
|---|
| 377 | Alias = None |
|---|
| 378 | Password = |
|---|
| 379 | Uin = 0 |
|---|
| 380 | WebPresence = 0 |
|---|
| 381 | HideIP = 0 |
|---|
| 382 | History = ${OWNER_HISTORY} |
|---|
| 383 | Groups.System = 0 |
|---|
| 384 | Groups.User = 0 |
|---|
| 385 | Ip = 0.0.0.0 |
|---|
| 386 | IntIp = 0.0.0.0 |
|---|
| 387 | Port = 1800 |
|---|
| 388 | NewMessages = 0 |
|---|
| 389 | LastOnline = 0 |
|---|
| 390 | LastSent = 0 |
|---|
| 391 | LastRecv = 0 |
|---|
| 392 | LastCheckedAR = 0 |
|---|
| 393 | AutoAccept = 0 |
|---|
| 394 | StatusToUser = 65535 |
|---|
| 395 | CustomAutoRsp = |
|---|
| 396 | SendIntIp = 0 |
|---|
| 397 | UserEncoding = |
|---|
| 398 | SID = 0 |
|---|
| 399 | GSID = 0 |
|---|
| 400 | Authorization = 0 |
|---|
| 401 | RCG = 0 |
|---|
| 402 | SSTime = 0 |
|---|
| 403 | SSCount = 0 |
|---|
| 404 | AutoResponse = |
|---|
| 405 | EOF |
|---|
| 406 | # fi |
|---|
| 407 | parse_contacts |
|---|
| 408 | out_users_conf >${LICQ_USERS}.new |
|---|
| 409 | fi |
|---|
| 410 | |
|---|
| 411 | test_mv ${LICQ_CONF} |
|---|
| 412 | test_mv ${LICQ_OWNER} |
|---|
| 413 | test_mv ${LICQ_USERS} |
|---|
| 414 | |
|---|
| 415 | chmod 700 ${LICQ_DIR} |
|---|
| 416 | chmod 600 ${LICQ_DIR}/* |
|---|
| 417 | chmod 700 ${LICQ_USER_DIR} |
|---|
| 418 | chmod 600 ${LICQ_USER_DIR}/* |
|---|
| 419 | chmod 700 ${LICQ_HISTORY_DIR} |
|---|
| 420 | chmod 600 ${LICQ_HISTORY_DIR}/* |
|---|