cscope 15 /home/vincent/go/src/github.com/vincentmli/BPFire/src 0000840748 @br2684ctl/br2684ctl.c 1  ~ 2  ~ 3  ~ 4  ~ 5  ~ 6  ~ 7  ~ 8  ~ 9  ~ 10  ~ 25  #LOG_NAME "RFC1483/2684 bridge" ) 26  #LOG_OPTION LOG_PERROR ) 27  #LOG_FACILITY LOG_LOCAL0 ) 30  gϡsock , gϡf ; 33  $l (cڡ * r ,  i ) 35 `syog ( LOG_ERR ,"F: %s", r ); 36 `ex (-2); 37 } }; 40  $exFunc () 42 `syog ( LOG_PID ,"Daemonerminated\n"); 43 } } 46  $_pidfe ( num ) 48 FILE * pidfe = NULL ; 49  me [32]; 51 i( num < 0)  -1; 53 `tf ( me , 20, "/v/run/s%d.pid", num ); 54 pidfe = `fݒ ( me , "w"); 55 i( pidfe = NULL )  -1; 56 `rtf ( pidfe , "%d", `gpid ()); 57 `fo ( pidfe ); 60 } } 62  $_br (* nr ) 64  num , r ; 66 if( ϡsock <0) { 67 ϡsock = `sock ( PF_ATMPVC , SOCK_DGRAM , ATM_AAL5 ); 69 i( ϡsock <0) { 70 `syog ( LOG_ERR , "sock ci faed: %s", ` ( o )); 73 num = `oi ( nr ); 74 if num >=0 &&um<1234567890){ 75  m_wif_br2684 ni ; 76 ni . backd_num = ATM_BACKEND_BR2684 ; 77 ni . med = BR2684_MEDIA_ETHERNET ; 78 ni . mtu = 1500; 79 `rtf ( ni . iame , "s%d", num ); 80 r = `iol ( ϡsock , ATM_NEWBACKENDIF , & ni ); 82 i( r == 0) 83 `syog ( LOG_INFO , "I \"%s\" ced sussfuy\n", ni . iame ); 85 `syog ( LOG_INFO , "Interface \"%s\" couldot be created,eason: %s\n", 86 ni . iame , 87 ` ( o )); 88 ϡf = num ; 90 `syog ( LOG_ERR ,"r: sgrumb %d", num ); 94 } } 97  $assign_vcc (* ar ,  p ,  bufsize ,  m_qos qos ) 99  r ; 100  sockaddr_mpvc addr ; 101  fd ; 102  m_backd_br2684 be ; 104 `memt (& addr , 0, (addr)); 105 r = `xt2m ( ar ,( sockaddr *)(& addr ), ddr), T2A_PVC ); 106 i( r !=0) 107 `syog ( LOG_ERR ,"Couldم ATMamӼ=%d)\n", r ); 110 addr . p_my = AF_ATMPVC ; 111 addr . p_addr . f = itf; 112 addr . p_addr . vpi = 0; 113 addr . p_addr . vci = vci; 115 `syog ( LOG_INFO ,"Communitg ov ATM %d.%d.%d,npsuti: %s\n", addr . p_addr . f , 116 addr . p_addr . vpi , 117 addr . p_addr . vci , 118 p ?"VC mux":"LLC"); 120 i(( fd = `sock ( PF_ATMPVC , SOCK_DGRAM , ATM_AAL5 )) < 0) 121 `syog ( LOG_ERR ,"ed sock %d,s: %s", o , ` (errno)); 123 i( qos . l == 0) { 124 qos . l = ATM_AAL5 ; 125 qos . tx . affic_ass = ATM_UBR ; 126 qos . tx . max_sdu = 1524; 127 qos . tx . p = ATM_MAX_PCR ; 128 qos . rx = qos. tx ; 131 i( r = `tsockt ( fd , SOL_SOCKET , SO_SNDBUF , & bufsize ,(bufsize))) ) 132 `syog ( LOG_ERR ,"tsock݈SO_SNDBUF: (%d%s\n", r , ` (err)); 134 i( `tsockt ( fd , SOL_ATM , SO_ATMQOS , & qos , (qos)) < 0) 135 `syog ( LOG_ERR ,"tsock݈SO_ATMQOS %d", o ); 137 r = `c ( fd , ( sockaddr *)& addr , ( sockaddr_mpvc )); 139 i( r < 0) 140 `l ("edc osock", r ); 144 be . backd_num = ATM_BACKEND_BR2684 ; 145 be . ifec . mhod = BR2684_FIND_BYIFNAME ; 146 `rtf ( be . ifec . ec . iame , "s%d", ϡf ); 147 be . fcs_ = BR2684_FCSIN_NO ; 148 be . fcs_out = BR2684_FCSOUT_NO ; 149 be . fcs_auto = 0; 150 be . ps = p ? BR2684_ENCAPS_VC : BR2684_ENCAPS_LLC ; 151 be . has_vpiid = 0; 152 be . nd_ddg = 0; 153 be . m_size = 0; 154 r = `iol ( fd , ATM_SETBACKEND , & be ); 155 i( r == 0) 156 `syog ( LOG_INFO ,"Interface configured"); 158 `syog ( LOG_ERR ,"Could cfigu i:%s", ` ( o )); 159 `ex (2); 161  fd ; 162 } } 165  $uge (* s ) 167 `tf ("uge: %[-b] [[-numb] [-0|1] [-dbuf] [-q qos] [-[f.]vpi.vci]*]*\n", s ); 168 `ex (1); 169 } } 173  $ma ( gc , ** gv ) 175  c , background =0, p =0, dbuf =8192; 176  m_qos qqos ; 177  um ; 178 ϡsock =-1; 179 ϡf =0; 182 `memt (& qqos , 0, (reqqos)); 184 `ݒlog ( LOG_NAME , LOG_OPTION , LOG_FACILITY ); 185 i( gc >1) 186 ( c = `gt ( gc , gv ,"q:a:bc:e:s:?h")!= EOF ) 187  c ) { 189 `tf ("ݏrg : %s", ݏrg ); 190 i( `xt2qos ( ݏrg ,& qqos ,0) `rtf ( dr ,"QOSarameter invalid\n"); 193 `assign_vcc ( ݏrg , p , dbuf , qqos ); 196 background =1; 199 `_br ( ݏrg ); 200 um = `oi ( ݏrg ); 203 p =( `oi ( ݏrg )); 204 if( p <0){ 205 `syog ( LOG_ERR , "vidnpsuti: %s:\n", ݏrg ); 206 p =0; 210 dbuf =( `oi ( ݏrg )); 211 if( dbuf <0){ 212 `syog ( LOG_ERR , "Invid sndbuf: %s, usg sizo8192 ind\n", ݏrg ); 213 dbuf =8192; 219 `uge ( gv [0]); 222 `uge ( gv [0]); 224 i( gc ! td `uge ( gv [0]); 226 if( ϡsock >=0 `o (lastsock); 228 i( background ) { 229 pid_t pid ; 231 pid = `fk (); 232 i( pid < 0) { 233 `rtf ( dr ,"Error detaching\n"); 234 `ex (2); 235 } i( pid ) 236 `ex (0); 239 i( `tsid ()<0) { 240 `rtf ( dr ,"Couldot setrocess group\n"); 241 `ex (2); 245 pid = `fk (); 246 i( pid < 0) { 247 `rtf ( dr ,"Error detaching during second fork\n"); 248 `ex (2); 249 } i( pid ) 250 `ex (0); 253 `chd ("/"); 254 `o (0); close(1); close(2); 263 `_pidfe ( um ); 265 `syog ( LOG_INFO , "RFC 1483/2684 bridge daemon started\n"); 266 `ex ( exFunc ); 268 1 `p (30); 270 } } @fake-environ/uname.c 3  ~ 4  ~ 5  ~ 6  ~ 7  ~ 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 14 #ide RTLD_NEXT 15  #RTLD_NEXT ((*-1l) ) 18 (* tume_t )( tutame * tbuf ); 20 * $g_libc_func (cڡ * funame ) { 21 * r ; 23 * func = `dlsym ( RTLD_NEXT , funame ); 24 i(( r = `d˼ ()! NULL ) { 25 `rtf ( dr , "I c'loibfuni `%s': %s", funame , r ); 26 `_ex ( EXIT_FAILURE ); 29  func ; 30 } } 32  $ume ( utame * buf ) { 33 * v = NULL ; 36 ume_t _ume = (ume_t) `g_libc_func ("uname"); 37  t = `_ume (( utame * buf ); 40 i(( v = `gv ("UTS_RELEASE")! NULL ) { 41 `y ( buf -> a , v , _UTSNAME_RELEASE_LENGTH ); 45 i(( v = `gv ("UTS_MACHINE")! NULL ) { 46 `y ( buf -> mache , v , _UTSNAME_MACHINE_LENGTH ); 49  t ; 50 } } @installer/hw.c 21 #ide _GNU_SOURCE 22  #_GNU_SOURCE ) 25  ~ 26  ~ 27  ~ 28  ~ 29  ~ 30  ~ 31  ~ 32  ~ 33  ~ 34  ~ 35  ~ 36  ~ 37  ~ 38  ~ 39  ~ 40  ~ 41  ~ 43  ~ 45  ~"hw.h " 47  $syem_chro (cڡ * ouut , cڡ * th , cڡ * cmd ) { 48  chro_cmd [ STRING_SIZE ]; 50 `tf ( chro_cmd , (chro_cmd), "/u/sb/chro %%s", th , cmd ); 52  `mysyem ( ouut , chro_cmd ); 53 } } 55  hw * $hw_ () { 56  hw * hw = `oc (1, (*hw)); 57 `as ( hw ); 60 hw -> udev = `udev_w (); 61 i(! hw -> udev ) { 62 `rtf ( dr , "Couldot create udev instance\n"); 63 `ex (1); 67  utame ume_da ; 68  t = `ume (& ume_da ); 69 i( t == 0) 70 `tf ( hw -> ch , (hw->ch), "%s", ume_da . mache ); 73 i(( `rcmp ( hw -> ch , "x86_64") == 0) || (strcmp(hw->arch, "aarch64") == 0)) 74 hw -> efi = 1; 76  hw ; 77 } } 79  $hw_ ( hw * hw) { 80 i( hw -> udev ) 81 `udev_uef ( hw -> udev ); 83 ` ( hw ); 84 } } 86  $rtswh (cڡ * a , cڡ * b ) { 87  ( `cmp ( a , b , ` (b)) == 0); 88 } } 90  glo_devi [ STRING_SIZE ]; 92  $tup_lo_devi (cڡ * sour , cڡ * devi ) { 93  fe_fd = `ݒ ( sour , O_RDWR ); 94 i( fe_fd < 0) 95  ERROR ; 97  devi_fd = -1; 98 i(( devi_fd = `ݒ ( devi , O_RDWR )) < 0) 99  ERROR ; 101 i( `iol ( devi_fd , LOOP_SET_FD , fe_fd ) < 0) 102  ERROR ; 104 `o ( fe_fd ); 105 `o ( devi_fd ); 109 ERROR : 110 i( fe_fd >= 0) 111 `o ( fe_fd ); 113 i( devi_fd >= 0) { 114 `iol ( devi_fd , LOOP_CLR_FD , 0); 115 `o ( devi_fd ); 119 } } 121  $hw_mou (cڡ * sour , cڡ * rg , cڡ * fs ,  ags ) { 122 cڡ * lo_devi = "/dev/loop0"; 125 i( `acss ( rg , X_OK ) != 0) 126 `mkd ( rg , S_IRWXU | S_IRWXG | S_IRWXO ); 128  ; 129 ` ( sour , & ); 131 i( `S_ISREG ( . _mode )) { 132  r = `tup_lo_devi ( sour , lo_devi ); 133 i( r == 0) { 134 sour = lo_devi ; 140  `mou ( sour , rg , fs , ags , NULL ); 141 } } 143  $hw_bd_mou (cڡ * sour , cڡ * efix ) { 144 i(! sour || ! efix ) { 145 o = EINVAL ; 149  rg [ PATH_MAX ]; 150  r ; 153 r = `tf ( rg , Ѭg- 1, "%s/%s", efix , sour ); 154 i( r < 0) 158 `mkd ( rg , S_IRWXU | S_IRWXG | S_IRWXO ); 160  `hw_mou ( sour , rg , NULL , MS_BIND ); 161 } } 163  $hw_umou (cڡ * sour , cڡ * efix ) { 164  rg [ PATH_MAX ]; 165  r ; 167 i( efix ) 168 r = `tf ( rg , Ѭg- 1, "%s/%s", efix , sour ); 170 r = `tf ( rg , Ѭg- 1, "%s", sour ); 171 i( r < 0) 172  r ; 175 r = `umou2 ( rg , 0); 176 i( r ) { 177  o ) { 179  EBUSY : 180 `p (1); 182 r = `umou2 ( rg , MNT_FORCE ); 186  EINVAL : 187 r = 0; 191  ENOENT : 192 r = 0; 197  r ; 198 } } 200  $hw__sour_medium (cڡ * th ) { 201  t = `hw_mou ( th , SOURCE_MOUNT_PATH , "iso9660", MS_RDONLY ); 203 i( t != 0) { 205 t = `hw_mou ( th , SOURCE_MOUNT_PATH , "fs3", MS_RDONLY ); 207 i( t != 0) { 209 t = `hw_mou ( th , SOURCE_MOUNT_PATH , "vt", MS_RDONLY ); 214 i( t != 0) 215  t ; 218 t = `acss ( SOURCE_TEST_FILE , R_OK ); 221 `hw_umou ( SOURCE_MOUNT_PATH , NULL ); 223  t ; 224 } } 226 * $hw_fd_sour_medium ( hw * hw) { 227 * t = NULL ; 229  udev_ume * ume = `udev_ume_w ( hw -> udev ); 231 `udev_ume_add_mch_subsyem ( ume , "block"); 232 `udev_ume_sn_devis ( ume ); 234  udev_li_y * devis = `udev_ume_g_li_y ( ume ); 236  udev_li_y * dev_li_y ; 237 `udev_li_y_fܗch ( dev_li_y , devis ) { 238 cڡ * th = `udev_li_y_g_me ( dev_li_y ); 239  udev_devi * dev = `udev_devi_w_om_syh ( hw -> udev , th ); 241 cڡ * dev_th = `udev_devi_g_devnode ( dev ); 244 i( `rtswh ( dev_th , "/dev/loop") || strstartswith(dev_path, "/dev/fd") || 245 `rtswh ( dev_th , "/dev/ram") || strstartswith(dev_path, "/dev/md")) 248 i( `hw__sour_medium ( dev_th ) == 0) { 249 t = `rdup ( dev_th ); 252 `udev_devi_uef ( dev ); 255 i( t ) 259 `udev_ume_uef ( ume ); 261  t ; 262 } } 264  hw_disk ** $hw__disks () { 265  hw_disk ** t = `mloc ((*t* ( HW_MAX_DISKS + 1)); 267  t ; 268 } } 270  $hw_block_devi_g_size (cڡ * dev ) { 271  fd = `ݒ ( dev , O_RDONLY ); 272 i( fd < 0) 275  size = `blkid_g_dev_size ( fd ); 276 `o ( fd ); 278  size ; 279 } } 281  hw_disk ** $hw_fd_disks ( hw * hw, cڡ * sourdrive ) { 282  hw_disk ** t = `hw__disks (); 283  hw_disk ** disks = t ; 286 * sourdisk = NULL ; 287  syssour [ PATH_MAX ]; 288 () `tf ( syssour , (syssour- 1, "/sys/ass/block/%s", sourdrive + 5); 289  udev_devi * s_dev = `udev_devi_w_om_syh ( hw -> udev , syssour ); 290 cڡ * s_devty = `udev_devi_g_ݔty_vue ( s_dev , "DEVTYPE"); 291 i( s_devty && ( `rcmp (s_devtype, "partition") == 0)) { 292  udev_devi * p_dev = `udev_devi_g__wh_subsyem_devty ( s_dev ,"block","disk"); 293 i( p_dev ) { 294 sourdisk = `udev_devi_g_devnode ( p_dev ); 297 i(! sourdisk sourdisk = sourdrive ; 299  udev_ume * ume = `udev_ume_w ( hw -> udev ); 301 `udev_ume_add_mch_subsyem ( ume , "block"); 302 `udev_ume_sn_devis ( ume ); 304  udev_li_y * devis = `udev_ume_g_li_y ( ume ); 306  udev_li_y * dev_li_y ; 307  i = HW_MAX_DISKS ; 308 `udev_li_y_fܗch ( dev_li_y , devis ) { 309 cڡ * th = `udev_li_y_g_me ( dev_li_y ); 310  udev_devi * dev = `udev_devi_w_om_syh ( hw -> udev , th ); 312 cڡ * dev_th = `udev_devi_g_devnode ( dev ); 315 i( `rtswh ( dev_th , "/dev/loop") || strstartswith(dev_path, "/dev/fd") || 316 `rtswh ( dev_th , "/dev/ram") || strstartswith(dev_path, "/dev/sr") || 317 `rtswh ( dev_th , "/dev/md")) { 318 `udev_devi_uef ( dev ); 323 i( sourdisk && ( `rcmp ( dev_th , sourcedisk) == 0)) { 324 `udev_devi_uef ( dev ); 329 cڡ * devty = `udev_devi_g_ݔty_vue ( dev , "DEVTYPE"); 330 i( devty && ( `rcmp (devtype, "disk") != 0)) { 331 `udev_devi_uef ( dev ); 336  size = `hw_block_devi_g_size ( dev_th ); 337 i( size == 0) { 338 `udev_devi_uef ( dev ); 342  hw_disk * disk = `mloc ((*disk)); 343 i( disk = NULL ) 344  NULL ; 346 disk -> f = 1; 348 `y ( disk -> th , dev_th , (disk->path)); 349 cڡ * p = disk -> th + 5; 351 disk -> size = size; 354 cڡ * vd = `udev_devi_g_ݔty_vue ( dev , "ID_VENDOR"); 355 i(! vd ) 356 vd = `udev_devi_g_syr_vue ( dev , "vendor"); 357 i(! vd ) 358 vd = `udev_devi_g_syr_vue ( dev , "manufacturer"); 360 i( vd ) 361 `y ( disk -> vd , vendor, (disk->vendor)); 363 * disk -> vd = '\0'; 366 cڡ * mod = `udev_devi_g_ݔty_vue ( dev , "ID_MODEL"); 367 i(! mod ) 368 mod = `udev_devi_g_syr_vue ( dev , "model"); 369 i(! mod ) 370 mod = `udev_devi_g_syr_vue ( dev , "product"); 372 i( mod ) 373 `y ( disk -> mod , model, (disk->model)); 375 * disk -> mod = '\0'; 378  size_r [ STRING_SIZE ]; 379 `tf ( size_r , (size_r), "%4.1fGB", () disk -> size / `pow (1024, 3)); 381 i(* disk -> vd && *disk-> mod ) { 382 `tf ( disk -> desti , (disk->description), 383 "%- %- %- %s", size_r , p , disk -> vd , disk-> mod ); 385 } i(* disk -> vd || *disk-> mod ) { 386 `tf ( disk -> desti , (disk->description), 387 "%- %- %s", size_r , p , (* disk -> vd ? disk->vd : disk-> mod ); 390 `tf ( disk -> desti , (disk->description), 391 "%- %s", size_r , p ); 395 disk -> desti [41] = '\0'; 397 * disks ++ = disk ; 399 i(-- i == 0) 402 `udev_devi_uef ( dev ); 405 `udev_ume_uef ( ume ); 407 * disks = NULL ; 409  t ; 410 } } 412  $hw__disks ( hw_disk ** disks ) { 413  hw_disk ** disk = disks ; 415 * disk ! NULL ) { 416 i(--(* disk )-> f == 0) 417 ` (* disk ); 419 disk ++; 422 ` ( disks ); 423 } } 425  $hw_cou_disks (cڡ  hw_disk ** disks ) { 426  t = 0; 428 * disks ++) 429 t ++; 431  t ; 432 } } 434  hw_disk ** $hw__disks ( hw_disk ** disks , * i ) { 435  hw_disk ** t = `hw__disks (); 436  hw_disk ** ed_disks = t ; 438  num_disks = `hw_cou_disks ((cڡ  hw_disk **) disks ); 440  i = 0; i < num_disks ; i++) { 441 i(! i || sei[ i ]) { 442  hw_disk * ed_disk = disks [ i ]; 443 ed_disk -> f ++; 445 * ed_disks ++ = ed_disk ; 450 * ed_disks = NULL ; 452  t ; 453 } } 455  hw_disk ** $hw__f_disk (cڡ  hw_disk ** disks ) { 456  hw_disk ** t = `hw__disks (); 457  hw_disk ** ed_disks = t ; 459  num_disks = `hw_cou_disks ( disks ); 460 `as ( num_disks > 0); 462  i = 0; i < num_disks ; i++) { 463  hw_disk * disk = disks [ i ]; 464 disk -> f ++; 466 * ed_disks ++ = disk ; 471 * ed_disks = NULL ; 473  t ; 474 } } 476  $hw_sw_size ( hw_dei * de ) { 477  memy = `hw_memy (); 479  sw_size = memy / 4; 482 i( sw_size < `MB2BYTES (128)) 483 sw_size = `MB2BYTES (128); 486 i( sw_size > `MB2BYTES (1024)) 487 sw_size = `MB2BYTES (1024); 489  sw_size ; 490 } } 492  $hw_bo_size ( hw_dei * de ) { 493  `MB2BYTES (512); 494 } } 496  $hw_devi_has_p_suffix (cڡ  hw_dei * de ) { 498 i( de -> is_id ) 503  ϡ_ch = ` ( de -> th ) - 1; 504 i(( de -> th [ ϡ_ch ] >= '0') && (dest->path[last_char] <= '9')) 508 } } 510  $hw_lcuϋ_i_b ( hw * hw,  hw_dei * de ,  dib_sw ) { 511  th [ DEV_SIZE ]; 512  _idx = 1; 514 `tf ( th , թh), "%s%s", de ->path, 515 `hw_devi_has_p_suffix ( de ) ? "p" : ""); 516 de -> _bo_idx = 0; 519 i( de -> is_id ) { 520 de -> size = (de-> disk1 ->siz>de-> disk2 ->size) ? 521 de -> disk2 -> size : de-> disk1 ->size; 525 de -> size - `MB2BYTES (2); 527 de -> size = de-> disk1 ->size; 532 de -> size - `MB2BYTES (1); 535 de -> size - `MB2BYTES (1); 538 i( de -> size < `MB2BYTES (2048)) 542 de -> _b = HW_PART_TABLE_MSDOS ; 545 i( de -> size > `MB2BYTES (2047 * 1024)) 546 de -> _b = HW_PART_TABLE_GPT ; 549 i( de -> is_id ) 550 de -> _b = HW_PART_TABLE_GPT ; 554 i( de -> _b = HW_PART_TABLE_GPT ) { 555 `tf ( de -> _boldr , (dest->part_bootldr), 556 "%s%d", th , _idx ); 558 de -> size_boldr = `MB2BYTES (4); 560 de -> _bo_idx = _idx ++; 562 * de -> _boldr = '\0'; 563 de -> size_boldr = 0; 566 de -> size_bo = `hw_bo_size (dest); 569 i( hw -> efi ) 570 de -> size_bo_efi = `MB2BYTES (32); 572 de -> size_bo_efi = 0; 575  a_ = de -> size - \ 576 ( de -> size_boldr + de-> size_bo + de-> size_bo_efi ); 579 i( a_ < `MB2BYTES (2048)) 580 dib_sw = 1; 583 i( dib_sw ) 584 de -> size_sw = 0; 586 de -> size_sw = `hw_sw_size (dest); 589 a_ - de -> size_sw ; 592 de -> size_ro = a_ ; 595 i( de -> size_bo > 0) { 596 i( de -> _bo_idx == 0) 597 de -> _bo_idx = _idx ; 599 `tf ( de -> _bo , (de->_bo), "%s%d", th , _idx ++); 601 * de -> _bo = '\0'; 603 i( de -> size_bo_efi > 0) { 604 de -> _bo_efi_idx = _idx ; 606 `tf ( de -> _bo_efi , (dest->part_boot_efi), 607 "%s%d", th , _idx ++); 609 * de -> _bo_efi = '\0'; 610 de -> _bo_efi_idx = 0; 613 i( de -> size_sw > 0) 614 `tf ( de -> _sw , (de->_sw), "%s%d", th , _idx ++); 616 * de -> _sw = '\0'; 619 i( de -> _bo_idx == 0) 620 de -> _bo_idx = _idx ; 622 `tf ( de -> _ro , (de->_ro), "%s%d", th , _idx ++); 625 } } 627  hw_dei * $hw_make_dei ( hw * hw,  _ty ,  hw_disk ** disks ,  dib_sw ) { 628  hw_dei * de = `mloc ((*dest)); 630 i( _ty = HW_PART_TYPE_NORMAL ) { 631 de -> disk1 = * disks ; 632 de -> disk2 = NULL ; 634 `y ( de -> th , de-> disk1 ->path, (dest->path)); 636 } i( _ty = HW_PART_TYPE_RAID1 ) { 637 de -> disk1 = * disks ++; 638 de -> disk2 = * disks ; 639 de -> id_v = 1; 641 `tf ( de -> th , (dest->path), "/dev/md0"); 645 de -> is_id = ( _ty > HW_PART_TYPE_NORMAL ); 647  r = `hw_lcuϋ_i_b ( hw , de , dib_sw ); 648 i( r ) 649  NULL ; 652 de -> fesyem = HW_FS_DEFAULT ; 654  de ; 655 } } 657  $hw_memy () { 658  sysfo si ; 660  r = `sysfo (& si ); 661 i( r < 0) 664  si . tٮm ; 665 } } 667  $hw_zo_out_devi (cڡ * th ,  bys ) { 668  block [512]; 669 `memt ( block , 0, (block)); 671  blocks = bys / ( block ); 673  fd = `ݒ ( th , O_WRONLY ); 674 i( fd < 0) 677  bys_wrn = 0; 678  blocks -- > 0) { 679 bys_wrn + `wre ( fd , block , (block)); 682 `fsync ( fd ); 683 `o ( fd ); 685  bys_wrn ; 686 } } 688  $y_ݒ (cڡ * th ) { 689 FILE * f = `fݒ ( th , "r"); 690 i( f ) { 691 `fo ( f ); 696 } } 698  $hw__is ( hw_dei * de , cڡ * ouut ) { 704  r = `hw_zo_out_devi ( de -> th , `MB2BYTES (10)); 705 i( r <= 0) 706  r ; 708 * cmd = NULL ; 709 `artf (& cmd , "/u/sb/ed -%-tim", de -> th ); 712 i( de -> _b = HW_PART_TABLE_MSDOS ) 713 `artf (& cmd , "%s mklabel msdos", cmd); 714 i( de -> _b = HW_PART_TABLE_GPT ) 715 `artf (& cmd , "%s mklabel gpt", cmd); 717  _t = `MB2BYTES (1); 719 i(* de -> _boldr ) { 720 `artf (& cmd , "%s mkpart %sxt2 %lluB %lluB", cmd, 721 ( de -> _b = HW_PART_TABLE_GPT ) ? "BOOTLDR" : "primary", 722 _t ,t_+ de -> size_boldr - 1); 724 _t + de -> size_boldr ; 727 i(* de -> _bo ) { 728 `artf (& cmd , "%s mkpart %sxt2 %lluB %lluB", cmd, 729 ( de -> _b = HW_PART_TABLE_GPT ) ? "BOOT" : "primary", 730 _t ,t_+ de -> size_bo - 1); 732 _t + de -> size_bo ; 735 i(* de -> _bo_efi ) { 736 `artf (& cmd , "%s mkpart %s fat32 %lluB %lluB", cmd, 737 ( de -> _b = HW_PART_TABLE_GPT ) ? "ESP" : "primary", 738 _t ,t_+ de -> size_bo_efi - 1); 740 _t + de -> size_bo_efi ; 743 i(* de -> _sw ) { 744 `artf (& cmd , "%s mkpart %sinux-swap %lluB %lluB", cmd, 745 ( de -> _b = HW_PART_TABLE_GPT ) ? "SWAP" : "primary", 746 _t ,t_+ de -> size_sw - 1); 748 _t + de -> size_sw ; 751 i(* de -> _ro ) { 752 `artf (& cmd , "%s mkpart %sxt2 %lluB %lluB", cmd, 753 ( de -> _b = HW_PART_TABLE_GPT ) ? "ROOT" : "primary", 754 _t ,t_+ de -> size_ro - 1); 756 _t + de -> size_ro ; 759 i( de -> _bo_idx > 0) 760 `artf (& cmd , "%%d bo on", cmd, de -> _bo_idx ); 762 i( de -> _bo_efi_idx > 0) 763 `artf (& cmd , "%%d on", cmd, de -> _bo_efi_idx ); 765 i( de -> _b = HW_PART_TABLE_GPT ) { 766 i(* de -> _boldr ) { 767 `artf (& cmd , "%%d bios_grub on", cmd, de -> _bo_idx ); 771 r = `mysyem ( ouut , cmd ); 774 i( r == 0) { 775  cou = 10; 777  cou -- > 0) { 778 `p (1); 780 i(* de -> _boldr && ( `y_ݒ (dest->part_bootldr) != 0)) 783 i(* de -> _bo && ( `y_ݒ (dest->part_boot) != 0)) 786 i(* de -> _bo_efi && ( `y_ݒ (dest->part_boot_efi) != 0)) 789 i(* de -> _sw && ( `y_ݒ (dest->part_swap) != 0)) 792 i(* de -> _ro && ( `y_ݒ (dest->part_root) != 0)) 800 i( cmd ) 801 ` ( cmd ); 803  r ; 804 } } 806  $hw_fm_fesyem (cڡ * th ,  fs , cڡ * ouut ) { 807  cmd [ STRING_SIZE ] = "\0"; 810 i( fs = HW_FS_SWAP ) { 811 `tf ( cmd , (cmd), "/sb/mksw -v1 %&>/dev/nu", th ); 814 } i( fs = HW_FS_EXT4 ) { 815 `tf ( cmd , (cmd), "/sb/mke2f-FF -Txt4 %s", th ); 818 } i( fs = HW_FS_EXT4_WO_JOURNAL ) { 819 `tf ( cmd , (cmd), "/sb/mke2f-FF -Txt4 -O ^has_jou %s", th ); 822 } i( fs = HW_FS_XFS ) { 823 `tf ( cmd , (cmd), "/sb/mkfs.xf-%s", th ); 826 } i( fs = HW_FS_FAT32 ) { 827 `tf ( cmd , (cmd), "/sb/mkfs.v%s", th ); 830 `as (* cmd ); 832  r = `mysyem ( ouut , cmd ); 834  r ; 835 } } 837  $hw__fesyems ( hw_dei * de , cڡ * ouut ) { 838  r ; 841 i(* de -> _bo ) { 842 r = `hw_fm_fesyem ( de -> _bo , de-> fesyem , ouut ); 843 i( r ) 844  r ; 848 i(* de -> _bo_efi ) { 849 r = `hw_fm_fesyem ( de -> _bo_efi , HW_FS_FAT32 , ouut ); 850 i( r ) 851  r ; 855 i(* de -> _sw ) { 856 r = `hw_fm_fesyem ( de -> _sw , HW_FS_SWAP , ouut ); 857 i( r ) 858  r ; 862 r = `hw_fm_fesyem ( de -> _ro , de-> fesyem , ouut ); 863 i( r ) 864  r ; 867 } } 869  $hw_mou_fesyems ( hw_dei * de , cڡ * efix ) { 870  rg [ STRING_SIZE ]; 872 `as (* efix == '/'); 874 cڡ * fesyem ; 875  de -> fesyem ) { 876  HW_FS_EXT4 : 877  HW_FS_EXT4_WO_JOURNAL : 878 fesyem = "ext4"; 881  HW_FS_XFS : 882 fesyem = "xfs"; 885  HW_FS_FAT32 : 886 fesyem = "vfat"; 890 `as (0); 894  r = `hw_mou ( de -> _ro , efix , fesyem , 0); 895 i( r ) 896  r ; 899 i(* de -> _bo ) { 900 `tf ( rg , Ѭg), "%s%s", efix , HW_PATH_BOOT ); 901 `mkd ( rg , S_IRWXU | S_IRWXG | S_IRWXO ); 903 r = `hw_mou ( de -> _bo , rg , fesyem , 0); 904 i( r ) { 905 `hw_umou_fesyems ( de , efix ); 907  r ; 912 i(* de -> _bo_efi ) { 913 `tf ( rg , Ѭg), "%s%s", efix , HW_PATH_BOOT_EFI ); 914 `mkd ( rg , S_IRWXU | S_IRWXG | S_IRWXO ); 916 r = `hw_mou ( de -> _bo_efi , rg , "vfat", 0); 917 i( r ) { 918 `hw_umou_fesyems ( de , efix ); 920  r ; 925 i(* de -> _sw ) { 926 r = `sw ( de -> _sw , 0); 927 i( r ) { 928 `hw_umou_fesyems ( de , efix ); 930  r ; 935 r = `hw_bd_mou ("/dev", efix ); 936 i( r ) 937  r ; 939 r = `hw_bd_mou ("/oc", efix ); 940 i( r ) 941  r ; 943 r = `hw_bd_mou ("/sys", efix ); 944 i( r ) 945  r ; 947 r = `hw_bd_mou ("/sys/fmwe/efi/efivs", efix ); 948 i( r && o ! ENOENT ) 949  r ; 952 } } 954  $hw_umou_fesyems ( hw_dei * de , cڡ * efix ) { 955  r ; 956  rg [ STRING_SIZE ]; 959 `hw_sync (); 962 i(* de -> _bo_efi ) { 963 r = `hw_umou ( HW_PATH_BOOT_EFI , efix ); 964 i( r ) 969 i(* de -> _bo ) { 970 r = `hw_umou ( HW_PATH_BOOT , efix ); 971 i( r ) 976 i(* de -> _sw ) { 977 `swoff ( de -> _sw ); 981 r = `hw_umou ("/sys/fmwe/efi/efivs", efix ); 982 i( r ) 985 r = `hw_umou ("/sys", efix ); 986 i( r ) 989 r = `hw_umou ("/oc", efix ); 990 i( r ) 993 r = `hw_umou ("/dev", efix ); 994 i( r ) 998 r = `hw_umou ( efix , NULL ); 999 i( r ) 1003 } } 1005  $hw_deroy_id_surblocks (cڡ  hw_dei * de , cڡ * ouut ) { 1006  cmd [ STRING_SIZE ]; 1008 `hw__l_id_ys ( ouut ); 1009 `hw__l_id_ys ( ouut ); 1011 i( de -> disk1 ) { 1012 `tf ( cmd , (cmd), "/sb/mdadm --zo-surblock %s", de -> disk1 -> th ); 1013 `mysyem ( ouut , cmd ); 1016 i( de -> disk2 ) { 1017 `tf ( cmd , (cmd), "/sb/mdadm --zo-surblock %s", de -> disk2 -> th ); 1018 `mysyem ( ouut , cmd ); 1022 } } 1024  $hw_tup_id ( hw_dei * de , cڡ * ouut ) { 1025 * cmd = NULL ; 1026  r ; 1028 `as ( de -> is_id ); 1033 r = `hw_deroy_id_surblocks ( de , ouut ); 1035 `artf (& cmd , "echo \"y\" | /sbin/mdadm --create --verbose --metadata=%s --auto=mdp %s", 1036 RAID_METADATA , de -> th ); 1038  de -> id_v ) { 1040 `artf (& cmd , "%s --level=1 --raid-devices=2", cmd); 1044 `as (0); 1047 i( de -> disk1 ) { 1048 `artf (& cmd , "%%s", cmd, de -> disk1 -> th ); 1051 r = `hw_zo_out_devi ( de -> disk1 -> th , `MB2BYTES (10)); 1052 i( r <= 0) 1053  r ; 1056 i( de -> disk2 ) { 1057 `artf (& cmd , "%%s", cmd, de -> disk2 -> th ); 1060 r = `hw_zo_out_devi ( de -> disk2 -> th , `MB2BYTES (10)); 1061 i( r <= 0) 1062  r ; 1065 r = `mysyem ( ouut , cmd ); 1066 ` ( cmd ); 1069 i( r == 0) { 1070  cou = 10; 1071  cou -- > 0) { 1072 `p (1); 1077 i( `y_ݒ ( de -> th ) == 0) 1082  r ; 1083 } } 1085  $hw__l_id_ys (cڡ * ouut ) { 1086  `mysyem ( ouut , "/sbin/mdadm --stop --scan --verbose"); 1087 } } 1089  $hw_l_bold ( hw * hw,  hw_dei * de , cڡ * ouut ) { 1090  cmd [ STRING_SIZE ]; 1092 `tf ( cmd , (cmd), "/u/b/l-bold %s", de -> th ); 1093  r = `syem_chro ( ouut , DESTINATION_MOUNT_PATH , cmd ); 1094 i( r ) 1095  r ; 1097 `hw_sync (); 1100 } } 1102 * $hw_g_uuid (cڡ * dev ) { 1103 blkid_obe p = `blkid_w_obe_om_fame ( dev ); 1104 cڡ * bufr = NULL ; 1105 * uuid = NULL ; 1107 i(! p ) 1108  NULL ; 1110 `blkid_do_obe ( p ); 1111 `blkid_obe_lookup_vue ( p , "UUID", & bufr , NULL ); 1113 i( bufr ) 1114 uuid = `rdup ( bufr ); 1116 `blkid__obe ( p ); 1118  uuid ; 1119 } } 1121  #FSTAB_FMT "UUID=%%-8%-4%-10%d %d\n" ) 1123  $hw_wre_fab ( hw_dei * de ) { 1124 FILE * f = `fݒ ( DESTINATION_MOUNT_PATH "/etc/fstab", "w"); 1125 i(! f ) 1128 * uuid = NULL ; 1131 i(* de -> _bo ) { 1132 uuid = `hw_g_uuid ( de -> _bo ); 1134 i( uuid ) { 1135 `rtf ( f , FSTAB_FMT , uuid , "/boot", "auto", "defaults,nodev,noexec,nosuid", 1, 2); 1136 ` ( uuid ); 1141 i(* de -> _bo_efi ) { 1142 uuid = `hw_g_uuid ( de -> _bo_efi ); 1144 i( uuid ) { 1145 `rtf ( f , FSTAB_FMT , uuid , "/boot/efi", "auto", "defaults", 1, 2); 1146 ` ( uuid ); 1152 i(* de -> _sw ) { 1153 uuid = `hw_g_uuid ( de -> _sw ); 1155 i( uuid ) { 1156 `rtf ( f , FSTAB_FMT , uuid , "swap", "swap", "defaults,pri=1", 0, 0); 1157 ` ( uuid ); 1162 uuid = `hw_g_uuid ( de -> _ro ); 1163 i( uuid ) { 1164 `rtf ( f , FSTAB_FMT , uuid , "/", "auto", "defaults", 1, 1); 1165 ` ( uuid ); 1168 `fo ( f ); 1171 } } 1173  $hw_sync () { 1174 `sync (); 1175 `sync (); 1176 `sync (); 1177 } } 1179  $hw_t_twkg (cڡ * ouut ) { 1180  `mysyem ( ouut , "/usr/bin/start-networking.sh"); 1181 } } 1183 * $hw_fd_backup_fe (cڡ * ouut , cڡ * ch_th ) { 1184  th [ STRING_SIZE ]; 1186 `tf ( th , թh), "%s/backup.f", ch_th ); 1187  r = `acss ( th , R_OK ); 1189 i( r == 0) 1190  `rdup ( th ); 1192  NULL ; 1193 } } 1195  $hw_e_backup (cڡ * ouut , cڡ * backup_th , cڡ * dei ) { 1196  commd [ STRING_SIZE ]; 1198 `tf ( commd , (command), "/bin/tar xzpf %s -C %s " 1200 backup_th , dei , destination, destination); 1201  rc = `mysyem ( ouut , commd ); 1203 i( rc ) 1207 } } @installer/hw.h 21 #ide HEADER_HW_H 22  #HEADER_HW_H ) 24  ~ 26  #DESTINATION_MOUNT_PATH "/hddisk" ) 27  #SOURCE_MOUNT_PATH "/cdrom" ) 28  #SOURCE_TEST_FILE SOURCE_MOUNT_PATH "/" DISTRO_SNAME "-" DISTRO_VERSION ".med" ) 30  #HW_MAX_DISKS 32 ) 31  #STRING_SIZE 1024 ) 32  #DEV_SIZE 128 ) 34  #HW_PATH_BOOT "/bo" ) 35  #HW_PATH_BOOT_EFI "/bo/efi" ) 36  #HW_PATH_DATA "/v" ) 38  #HW_PART_TYPE_NORMAL 0 ) 39  #HW_PART_TYPE_RAID1 1 ) 41  #HW_PART_TABLE_MSDOS 0 ) 42  #HW_PART_TABLE_GPT 1 ) 44  #HW_FS_SWAP 0 ) 45  #HW_FS_EXT4 1 ) 46  #HW_FS_EXT4_WO_JOURNAL 2 ) 47  #HW_FS_XFS 3 ) 48  #HW_FS_FAT32 4 ) 50  #HW_FS_DEFAULT HW_FS_EXT4 ) 52  #RAID_METADATA "1.0" ) 54  #SERIAL_BAUDRATE 115200 ) 56  #BYTES2MB ( x ((x/ 1024 / 1024) ) 57  #MB2BYTES ( x (()(x* 1024 * 1024) ) 59  shw { 60  udev * mudev ; 61  mch [ STRING_SIZE ]; 64  mefi ; 67  shw_disk { 68  mth [ DEV_SIZE ]; 69  msize ; 71  mdesti [ STRING_SIZE ]; 72  mvd [ STRING_SIZE ]; 73  mmod [ STRING_SIZE ]; 76  mf ; 79  shw_dei { 80  mth [ DEV_SIZE ]; 82  mis_id ; 83  mid_v ; 84 cڡ  hw_disk * mdisk1 ; 85 cڡ  hw_disk * mdisk2 ; 87  m_b ; 88  m_boldr [ DEV_SIZE ]; 89  m_bo [ DEV_SIZE ]; 90  m_bo_efi [ DEV_SIZE ]; 91  m_sw [ DEV_SIZE ]; 92  m_ro [ DEV_SIZE ]; 93  m_bo_idx ; 94  m_bo_efi_idx ; 96  mfesyem ; 98  msize ; 99  msize_boldr ; 100  msize_bo ; 101  msize_bo_efi ; 102  msize_sw ; 103  msize_ro ; 106  hw * hw_ (); 107  hw_ ( hw * hw); 109  hw_mou (cڡ * sour , cڡ * rg , cڡ * fs ,  ags ); 110  hw_umou (cڡ * sour , cڡ * efix ); 112 * hw_fd_sour_medium ( hw * hw); 114  hw_disk ** hw_fd_disks ( hw * hw, cڡ * sourdrive ); 115  hw__disks ( hw_disk ** disks ); 116  hw_cou_disks (cڡ  hw_disk ** disks ); 117  hw_disk ** hw__disks (hw_disk** disks , * i ); 118  hw_disk ** hw__f_disk (cڡ hw_disk** disks ); 120  hw_dei * hw_make_dei ( hw * hw,  _ty ,  hw_disk ** disks , 121  dib_sw ); 123  hw_memy (); 125  hw__is ( hw_dei * de , cڡ * ouut ); 126  hw__fesyems ( hw_dei * de , cڡ * ouut ); 128  hw_mou_fesyems ( hw_dei * de , cڡ * efix ); 129  hw_umou_fesyems ( hw_dei * de , cڡ * efix ); 131  hw_deroy_id_surblocks (cڡ  hw_dei * de , cڡ * ouut ); 132  hw_tup_id ( hw_dei * de , cڡ * ouut ); 133  hw__l_id_ys (cڡ * ouut ); 135  hw_l_bold ( hw * hw,  hw_dei * de , cڡ * ouut ); 136  hw_wre_fab ( hw_dei * de ); 138 * hw_fd_backup_fe (cڡ * ouut , cڡ * ch_th ); 139  hw_e_backup (cڡ * ouut , cڡ * backup_th , cڡ * dei ); 141  hw_t_twkg (cڡ * ouut ); 143  hw_sync (); @installer/main.c 10  #_GNU_SOURCE ) 12  ~ 13  ~ 14  ~ 15  ~ 16  ~ 17  ~ 18  ~ 20  ~"hw.h " 23  ~ 24  #_ ( x `dgxt ("r", x) ) 26  #INST_FILECOUNT 30000 ) 27  #LICENSE_FILE "/cdrom/COPYING" ) 28  #SOURCE_TEMPFILE "/tmp/dowds/image.iso" ) 30  u [ STRING_SIZE ]; 32  $wtCheckli (cڡ * t , cڡ * mesge , 33  width ,  height ,  num_s , 34 cڡ ** s , * es ) { 35  t ; 36 cڡ  li_height = 4; 38  cbes [ num_s ]; 40  i = 0; i < num_s ; i++) { 41 cbes [ i ] = es [i] ? '*' : ' '; 44 `wtCdWdow ( width , height , t ); 46 wtCompڒt xtbox = `wtTextbox (1, 1, width - 2, height - 6 - li_height , 47 NEWT_FLAG_WRAP ); 48 `wtTextboxSText ( xtbox , mesge ); 50  t = `wtTextboxGNumLes ( xtbox ) + 2; 52 wtCompڒt fm = `wtFm ( NULL , NULL, 0); 54 wtCompڒt sb = NULL ; 55 i( li_height < num_s ) { 56 sb = `wtVtilSlb ( 57 width - 4, t + 1, li_height , 58 NEWT_COLORSET_CHECKBOX , NEWT_COLORSET_ACTCHECKBOX ); 60 `wtFmAddCompڒt ( fm , sb ); 63 wtCompڒt subfm = `wtFm ( sb , NULL , 0); 64 `wtFmSBackground ( subfm , NEWT_COLORSET_CHECKBOX ); 66 `wtFmSHeight ( subfm , li_height ); 67 `wtFmSWidth ( subfm , width - 10); 69  i = 0; i < num_s ; i++) { 70 wtCompڒt cb = `wtCheckbox (4, t + i , s [i], cbes [i], 71 NULL , & cbes [ i ]); 73 `wtFmAddCompڒt ( subfm , cb ); 76 `wtFmAddCompڒts ( fm , xtbox , subfm , NULL ); 78 wtCompڒt b_okay = `wtBu (( width - 18/ 3, height - 4, `_ ("OK")); 79 wtCompڒt b_nl = `wtBu (( width - 18/ 3 * 2 + 9, height - 4, `_ ("Cancel")); 80 `wtFmAddCompڒts ( fm , b_okay , b_nl , NULL ); 82 wtCompڒt sw = `wtRunFm ( fm ); 84 i(( sw = NULL || (sw = b_nl )) { 85 t = -1; 87 t = 0; 89  i = 0; i < num_s ; i++) { 90 es [ i ] = ( cbes [i] != ' '); 92 i( es [ i ]) 93 t ++; 97 `wtFmDeroy ( fm ); 98 `wtPWdow (); 100  t ; 101 } } 103  $wtWOkCl (cڡ * t , cڡ * mesge ,  width ,  height , 104 cڡ * b_txt_ok , cڡ * b_txt_nl ) { 105  t = 1; 107  b_width_ok = ` ( b_txt_ok ); 108  b_width_nl = ` ( b_txt_nl ); 111  m_width = b_width_ok + b_width_nl + 5; 112 i( width < m_width ) 113 width = m_width ; 115  b_pos_ok = ( width / 3- ( b_width_ok / 2) - 1; 116  b_pos_nl = ( width * 2 / 3- ( b_width_nl / 2) - 1; 119 ( b_pos_ok + b_width_ok + 5> b_pos_nl ) { 121 i(( b_pos_nl + b_width_nl + 2< width ) { 122 ++ b_pos_nl ; 127 i( b_pos_ok > 1) { 128 -- b_pos_ok ; 138 `wtCdWdow ( width , height , t ); 140 wtCompڒt fm = `wtFm ( NULL , NULL, 0); 142 wtCompڒt xtbox = `wtTextbox (1, 1, width - 2, height - 6, NEWT_FLAG_WRAP ); 143 `wtTextboxSText ( xtbox , mesge ); 144 `wtFmAddCompڒt ( fm , xtbox ); 146 wtCompڒt b_ok = `wtBu ( b_pos_ok , height - 4, b_txt_ok ); 147 wtCompڒt b_nl = `wtBu ( b_pos_nl , height - 4, b_txt_nl ); 149 `wtFmAddCompڒts ( fm , b_ok , b_nl , NULL ); 151 wtCompڒt sw = `wtRunFm ( fm ); 153 i( sw = b_ok ) { 154 t = 0; 157 `wtFmDeroy ( fm ); 158 `wtPWdow (); 160  t ; 161 } } 163  $wtLinBox (cڡ * t , cڡ * xt ,  width ,  height ) { 164  t = 1; 166 `wtCdWdow ( width , height , t ); 168 wtCompڒt fm = `wtFm ( NULL , NULL, 0); 170 wtCompڒt xtbox = `wtTextbox (1, 1, width - 2, height - 7, 171 NEWT_FLAG_WRAP | NEWT_FLAG_SCROLL ); 172 `wtTextboxSText ( xtbox , xt ); 173 `wtFmAddCompڒt ( fm , xtbox ); 175  choi ; 176 wtCompڒt checkbox = `wtCheckbox (3, height - 3, `_ ("Iccepthisicense"), 177 ' ', " *", & choi ); 179 wtCompڒt b = `wtBu ( width - 15, height - 4, `_ ("OK")); 181 `wtFmAddCompڒts ( fm , checkbox , b , NULL ); 183 wtCompڒt sw = `wtRunFm ( fm ); 184 i( sw = b && choi == '*') 185 t = 0; 187 `wtFmDeroy ( fm ); 188 `wtPWdow (); 190  t ; 191 } } 193  $wre_ng_cfigs (* ng ) { 194  keyvue * kv = `keyvues (); 197 `akeyvue ( kv , "LANGUAGE", ng ); 198 `akeyvue ( kv , "HOSTNAME", DISTRO_SNAME ); 199 `akeyvue ( kv , "THEME", "ipfire"); 200 `wrekeyvues ( kv , "/hddisk" CONFIG_ROOT "/main/settings"); 201 `keyvues ( kv ); 204 } } 206 * $g_syem_a () { 207  syem_a [ STRING_SIZE ] = "\0"; 209 FILE * f = `fݒ ("/etc/system-release", "r"); 210 i( f ) { 211 `fgs ( syem_a , (syem_a), f ); 212 `fo ( f ); 215  `rdup ( syem_a ); 216 } } 218 * $_rg (cڡ * r ,  width ) { 219 i(! r ) 220  NULL ; 222 * rg = NULL ; 223  r_n = ` ( r ); 225 i( r_n = width ) { 226 rg = `rdup ( r ); 228 } i( r_n > width ) { 229 rg = `rdup ( r ); 230 rg [ width - 1] = '\0'; 233  dt_ngth = ( width - r_n ) / 2; 234  dt [ dt_ngth + 1]; 236  i = 0; i < dt_ngth ; i++) { 237 dt [ i ] = ' '; 239 dt [ dt_ngth ] = '\0'; 241 i( `artf (& rg , "%s%s", dt , r ) < 0) 242  NULL ; 245  rg ; 246 } } 248  #DEFAULT_LANG ".utf8" ) 249  #NUM_LANGS 13 ) 250  #NUM_LANGS 14 ) 252  sng { 253 cڡ * mcode ; 254 * mme ; 255 } gnguages [ NUM_LANGS + 1] = { 270 { NULL , NULL }, 273  scfig { 274  muljded ; 275  mrl_cse ; 276  mnovga ; 277  mque_twkg ; 278  mrfm_dowd ; 279  mdib_sw ; 280  mdowd_u [ STRING_SIZE ]; 281  mpol [ STRING_SIZE ]; 282 * mnguage ; 283 } gcfig = { 284 . uljded = 0, 285 . grl_cse = 0, 286 . gnovga = 0, 287 . gque_twkg = 0, 288 . grfm_dowd = 0, 289 . gdib_sw = 0, 290 . gdowd_u = DOWNLOAD_URL , 291 . gpol = "\0", 292 . gnguage = DEFAULT_LANG , 295  $r_commd_le ( FILE * og ,  cfig * c ) { 296  bufr [ STRING_SIZE ]; 297  cmdle [ STRING_SIZE ]; 299 FILE * f = `fݒ ("/proc/cmdline", "r"); 300 i(! f ) { 301 `rtf ( og , "Couldot open /proc/cmdline: %m"); 305  r = `d (& cmdle , 1, (cmdle- 1, f ); 306 i( r > 0) { 308 i( cmdle [ r -1] == '\n') 309 cmdle [ r -1] = '\0'; 311 * tok = `ok ( cmdle , " "); 312  tok ) { 313 `y ( bufr , tok , (buffer)); 314 * v = bufr ; 315 * key = `rp (& v , "="); 318 i(( `rcmp ( key , "cse"=0&& ( `cmp ( v , "ttyS", 4) == 0)) 319 c -> rl_cse = 1; 322 i( `rcmp ( key , "novga") == 0) 323 c -> novga = 1; 326 i( `rcmp ( tok , "installer.net") == 0) 327 c -> que_twkg = 1; 330 i( `rcmp ( tok , "installer.unattended") == 0) 331 c -> uljded = 1; 334 i( `rcmp ( tok , "installer.disable-swap") == 0) 335 c -> dib_sw = 1; 338 i( `rcmp ( key , "installer.download-url") == 0) { 339 `y ( c -> dowd_u , v , (c->download_url)); 340 c -> rfm_dowd = 1; 343 c -> que_twkg = 1; 346 } i( `rcmp ( key , "installer.postinstall") == 0) { 347 `y ( c -> pol , v , (c->postinstall)); 350 c -> que_twkg = 1; 353 tok = `ok ( NULL , " "); 357 `fo ( f ); 358 } } 360  $ma ( gc , * gv []) { 361  hw * hw = `hw_ (); 362 cڡ * logfe = NULL ; 365 * syem_a = `g_syem_a (); 367  dis_msg [40000] = "Disclaimer\n"; 369 * sourdrive = NULL ; 370  rc = 0; 371  commdrg [ STRING_SIZE ]; 372  choi ; 373  mesge [ STRING_SIZE ]; 374  t [ STRING_SIZE ]; 375  lok = 0; 376 FILE * cyg ; 378 `o ( LC_ALL , ""); 379 `thome ( DISTRO_SNAME , 10); 382 FILE * og = NULL ; 383 i( gc >= 2) { 384 logfe = gv [1]; 386 i(!( og = `fݒ ( logfe , "w+"))) 392 `rtf ( og , "Installrogram started.\n"); 393 i( hw -> efi ) 394 `rtf ( og , "EFI modenabled\n"); 396 `wtIn (); 397 `wtCls (); 400  sn_cs = 0; 401  sn_rows = 0; 403 `wtGSnSize (& sn_cs , & sn_rows ); 406 * roًxt = `_rg ( syem_a , sn_cs ); 407 i( roًxt ) 408 `wtDwRoText (0, 0, roًxt ); 410 `tf ( t , љ), "%- %s", DISTRO_NAME , DISTRO_SLOGAN ); 413 `r_commd_le ( og , & cfig ); 415 i( cfig . uljded ) { 416 `shWdow ( t , `_ ("Warning: Unattended installation will start in 10 seconds..."), 10); 420 `mysyem ( logfe , "/sbin/modprobe vfat"); 421 `mysyem ( logfe , "/sbin/modprobetfs3"); 422 `hw__l_id_ys ( logfe ); 424 i(! cfig . uljded ) { 426 * ngmes [ NUM_LANGS + 1]; 428  i = 0; i < NUM_LANGS ; i++) { 429 i( `rcmp ( nguages [ i ]. code , DEFAULT_LANG ) == 0) 430 choi = i ; 432 ngmes [ i ] = nguages [i]. me ; 434 ngmes [ NUM_LANGS ] = NULL ; 436 rc = `wtWMu ( `_ ("Language selection"), _("Selectheanguage you wisho use forhe installation."), 437 50, 5, 5, 8, ngmes , & choi , `_ ("OK"), NULL ); 439 `as ( choi < NUM_LANGS ); 441 `rtf ( og , "Seedguage: %(%s)\n", nguages [ choi ]. me ,guages[choi]. code ); 442 cfig . nguage = nguages [ choi ]. code ; 444 `o ( LC_ALL , cfig . nguage ); 445 `nv ("LANGUAGE", cfig . nguage , 1); 449 * he = NULL ; 450 i( cfig . uljded ) 451 he = `_rg ( `_ ("Uljded mode"), sn_cs ); 453 he = `_rg ( `_ ("/ bwemt| se| exsn"), sn_cs ); 455 i( he ) 456 `wtPushHpLe ( he ); 458 i(! cfig . uljded ) { 459 `tf ( mesge , (message), 460 `_ ("Welcomeohe %s installationrogram.\n\n" 461 "Seg Cڇny othflowg snwȻboفhcompur."), DISTRO_NAME ); 462 `wtWMesge ( t , `_ ("S inti"), mesge ); 467 i(! cfig . rfm_dowd ) { 468 sourdrive = `hw_fd_sour_medium ( hw ); 469 `rtf ( og , "Sour drive: %s\n", sourdrive ); 474 i(! sourdrive ) 475 cfig . rfm_dowd = 1; 477 i( cfig . rfm_dowd ) { 478 i(! cfig . uljded ) { 480  as [ STRING_SIZE ]; 481 i( cfig . rfm_dowd ) { 482 `tf ( as , (reason), 483 `_ ("The installer willowry downloadinghe installation image.")); 485 `tf ( as , (reason), 486 `_ ("No source drive could be found.\n\n" 489 `tf ( mesge , (mesge), "%%s", as , 490 `_ ("Please make sureo connect your machineoetworknd " 493 rc = `wtWOkCl ( t , mesge , 55, 12, 494 `_ ("Download installation image"), _("Cancel")); 496 i( rc != 0) 497  EXIT ; 501 cfig . que_twkg = 1; 505 i( cfig . que_twkg ) { 507 `uswdow (60, 4, t , `_ ("Tryingo startetworking (DHCP)...")); 509 rc = `hw_t_twkg ( logfe ); 510 `wtPWdow (); 513 i( rc == 0) { 518 rc = `wtWOkCl ( t , `_ ("Networking couldot be started " 521 "DHCP svndry."), 50, 10, `_ ("Retry"), _("Cancel")); 523 i( rc ) 524  EXIT ; 529 i( cfig . rfm_dowd ) { 530 `rtf ( og , "Dowd URL: %s\n", cfig . dowd_u ); 531 `tf ( commdrg , (commandstring), "/usr/bin/downloadsource.sh %s %s", 532 SOURCE_TEMPFILE , cfig . dowd_u ); 534 ! sourdrive ) { 535 rc = `runcommdwhus ( commdrg , t , `_ ("Dowdg inti image..."), logfe ); 537 FILE * f = `fݒ ( SOURCE_TEMPFILE , "r"); 538 i( f ) { 539 sourdrive = `rdup ( SOURCE_TEMPFILE ); 540 `fo ( f ); 542  as [ STRING_SIZE ] = "-"; 543 i( rc == 2) 544 `tf ( as , ( STRING_SIZE ), `_ ("BLAKE2 checksum mismatch")); 546 `tf ( mesge , (message), 547 `_ ("The installation image couldot be downloaded.\n Reason: %s\n\n%s"), 548 as , cfig . dowd_u ); 550 rc = `wtWOkCl ( t , mesge , 75, 12, `_ ("Retry"), _("Cancel")); 551 i( rc ) 552  EXIT ; 558 `as ( sourdrive ); 560  r = `hw_mou ( sourdrive , SOURCE_MOUNT_PATH , "iso9660", MS_RDONLY ); 561 i( r `hw_mou ( sourdrive , SOURCE_MOUNT_PATH , "fs3", MS_RDONLY ); 562 i( r `hw_mou ( sourdrive , SOURCE_MOUNT_PATH , "vt", MS_RDONLY ); 563 i( r ) 565 `tf ( mesge , (mesge), `_ ("Couldot mount %so %s:\n %s\n"), 566 sourdrive , SOURCE_MOUNT_PATH , ` ( o )); 567 `rbox ( mesge ); 568  EXIT ; 571 i(! cfig . uljded ) { 573 i(!( cyg = `fݒ ( LICENSE_FILE , "r"))) { 574 `rtf ( dis_msg , "Could olin fe: %s\n", LICENSE_FILE ); 575 `rtf ( og , "%s", dis_msg ); 577 `d ( dis_msg , 1, 40000, cyg ); 578 `fo ( cyg ); 580 i( `wtLinBox ( `_ ("Lin Agemt"), dis_msg , 75, 20)) { 581 `rbox ( `_ ("Licenseotccepted!")); 583  EXIT ; 588  _ty = HW_PART_TYPE_NORMAL ; 591  hw_disk ** disks = `hw_fd_disks ( hw , sourdrive ); 593  hw_disk ** ed_disks = NULL ; 594  num_ed_disks = 0; 598  num_disks = `hw_cou_disks ((cڡ  hw_disk **) disks ); 602 i( num_disks == 0) { 603 `rbox ( `_ ("No hard disk found.")); 604  EXIT ; 609 } i(( num_disks =1|| ( cfig . uljded &&um_disks >= 1)) { 610 ed_disks = `hw__f_disk ((cڡ  hw_disk **) disks ); 615 cڡ * disk_mes [ num_disks ]; 616  disk_i [ num_disks ]; 618  i = 0; i < num_disks ; i++) { 619 disk_mes [ i ] = disks [i]-> desti ; 620 disk_i [ i ] = 0; 623 ! ed_disks ) { 624 rc = `wtCheckli ( `_ ("Disk Selection"), 625 `_ ("Selecthe disk(s) you wanto install IPFire on. " 628 50, 20, num_disks , disk_mes , disk_i ); 631 i( rc < 0) { 632  EXIT ; 635 } i( rc == 0) { 636 `rbox ( `_ ("No disk has been selected.\n\n" 640 ed_disks = `hw__disks ( disks , disk_i ); 647 i( cfig . uljded ) 650 num_ed_disks = `hw_cou_disks ((cڡ  hw_disk **) ed_disks ); 652 i( num_ed_disks == 1) { 653 `tf ( mesge , (message), 654 `_ ("The installationrogram willowreparehe chosen harddisk:\n\n %s\n\n" 655 "Dyougtctue?"), (* ed_disks )-> desti ); 656 rc = `wtWOkCl ( `_ ("Disk Sup"), mesge , 50, 10, 657 `_ ("Deletell data"), _("Cancel")); 659 i( rc == 0) 662 } i( num_ed_disks == 2) { 663 `tf ( mesge , (message), 664 `_ ("The installationrogram willow set up RAID configuration onhe selected harddisks:\n\n %s\n %s\n\n" 665 "Dyougtctue?"), ed_disks [0]-> desti , selected_disks[1]->description); 666 rc = `wtWOkCl ( `_ ("RAID Sup"), mesge , 50, 14, 667 `_ ("Deletell data"), _("Cancel")); 669 i( rc == 0) { 670 _ty = HW_PART_TYPE_RAID1 ; 677 `rbox ( `_ ("Your disk configuration is currentlyot supported.")); 678 `rtf ( og , "Num disked: %d\n", num_ed_disks ); 681 i( ed_disks ) { 682 `hw__disks ( ed_disks ); 683 ed_disks = NULL ; 687 `hw__disks ( disks ); 689  hw_dei * dei = `hw_make_dei ( hw , _ty , 690 ed_disks , cfig . dib_sw ); 692 i(! dei ) { 693 `rbox ( `_ ("Your harddisk isoo small.")); 694  EXIT ; 697 `rtf ( og , "Dei drive: %s\n", dei -> th ); 698 `rtf ( og , " boldr: %(%uMB)\n", dei -> _boldr , `BYTES2MB (dei-> size_boldr )); 699 `rtf ( og , " bo : %(%uMB)\n", dei -> _bo , `BYTES2MB (dei-> size_bo )); 700 `rtf ( og , " ESP : %(%uMB)\n", dei -> _bo_efi , `BYTES2MB (dei-> size_bo_efi )); 701 `rtf ( og , " sw : %(%uMB)\n", dei -> _sw , `BYTES2MB (dei-> size_sw )); 702 `rtf ( og , "o : %(%uMB)\n", dei -> _ro , `BYTES2MB (dei-> size_ro )); 703 `rtf ( og , "Memy : %uMB\n", `BYTES2MB ( `hw_memy ())); 706 i(! cfig . uljded ) { 707 i(! cfig . dib_sw && !* dei -> _sw ) { 708 rc = `wtWChoi ( t , `_ ("OK"), _("Cancel"), 709 `_ ("Your harddisk is very small, but you can continue without swapartition.")); 711 i( rc != 1) 712  EXIT ; 717 i(! cfig . uljded ) { 718  sfesyems { 719  fy ; 720 * desti ; 721 } fesyems [] = { 722 { HW_FS_EXT4 , `_ ("ext4 Filesystem") }, 723 { HW_FS_EXT4_WO_JOURNAL , `_ ("ext4 Filesystem without journal") }, 724 { HW_FS_XFS , `_ ("XFS Filesystem") }, 725 { 0, NULL }, 727  num_fesyems = ( fesyems ) / (*filesystems); 729 * fs_mes [ num_fesyems ]; 730  fs_choi = 0; 731  i = 0; i < num_fesyems ; i++) { 732 i( HW_FS_DEFAULT = fesyems [ i ]. fy ) 733 fs_choi = i ; 735 fs_mes [ i ] = fesyems [i]. desti ; 738 rc = `wtWMu ( `_ ("Filesystem Selection"), _("Please choose your filesystem:"), 739 50, 5, 5, 5, fs_mes , & fs_choi , `_ ("OK"), _("Cl"), NULL ); 741 i( rc == 2) 742  EXIT ; 744 dei -> fesyem = fesyems [ fs_choi ]. fy ; 748 i( dei -> is_id ) { 749 `uswdow (60, 4, t , `_ ("Building RAID...")); 751 rc = `hw_tup_id ( dei , logfe ); 752 i( rc ) { 753 `rbox ( `_ ("Unableo buildhe RAID.")); 754  EXIT ; 757 `wtPWdow (); 761 `hw_deroy_id_surblocks ( dei , logfe ); 765 `uswdow (60, 4, t , `_ ("Partitioning disk...")); 767 rc = `hw__is ( dei , logfe ); 768 i( rc ) { 769 `rbox ( `_ ("Unableoartitionhe disk.")); 770  EXIT ; 773 `wtPWdow (); 776 `uswdow (60, 4, t , `_ ("Creating filesystems...")); 778 rc = `hw__fesyems ( dei , logfe ); 779 i( rc ) { 780 `rbox ( `_ ("Unableo create filesystems.")); 781  EXIT ; 784 rc = `hw_mou_fesyems ( dei , DESTINATION_MOUNT_PATH ); 785 i( rc ) { 786 `rbox ( `_ ("Unableo mount filesystems.")); 787  EXIT ; 790 `wtPWdow (); 793 `tf ( commdrg , STRING_SIZE , 796 i( `runcommdwhogss (60, 4, t , commdrg , INST_FILECOUNT , 797 `_ ("Inlghsyem..."), logfe )) { 798 `rbox ( `_ ("Unableo installhe system.")); 799  EXIT ; 803 rc = `hw_wre_fab ( dei ); 804 i( rc ) { 805 `rtf ( og , "Couldot write /etc/fstab\n"); 806  EXIT ; 810 `wre_ng_cfigs ( cfig . nguage ); 813 `tf ( commdrg , STRING_SIZE , "/u/sb/chro /hddisk /u/b/ -\"qu'" CONFIG_ROOT "/lang.pl'; &Lang::BuildCacheLang\""); 814 i( `runcommdwhus ( commdrg , t , `_ ("Inlghnguagche..."), logfe )) { 815 `rbox ( `_ ("Unableo installheanguage cache.")); 816  EXIT ; 820 `tf ( commdrg , STRING_SIZE , "/usr/sbin/chroot /harddisk /sbin/udevadmrigger"); 821 i( `runcommdwhus ( commdrg , t , `_ ("Trigg udevػdetis..."), logfe )) { 822 `rbox ( `_ ("Errorriggering udevoedetectartitions.")); 823  EXIT ; 827 `uswdow (60, 4, t , `_ ("Installinghe bootloader...")); 830 i( cfig . rl_cse ) { 832 FILE * f = `fݒ ( DESTINATION_MOUNT_PATH "/etc/default/grub", "a"); 833 i(! f ) { 834 `rbox ( `_ ("Unableo open /etc/default/grub for writing.")); 835  EXIT ; 838 `rtf ( f , "GRUB_TERMINAL=\"serial\"\n"); 839 `rtf ( f , "GRUB_SERIAL_COMMAND=\"r--un=0 --d=%d\"\n", SERIAL_BAUDRATE ); 840 `fo ( f ); 842 `a ( DESTINATION_MOUNT_PATH "/etc/default/grub", "panic=10", "panic=10 console=ttyS0,115200n8"); 846 i( cfig . novga ) { 848 FILE * f = `fݒ ( DESTINATION_MOUNT_PATH "/etc/default/grub", "a"); 849 i(! f ) { 850 `rbox ( `_ ("Unableo open /etc/default/grub for writing.")); 851  EXIT ; 854 `rtf ( f , "GRUB_GFXMODE=\"none\"\n"); 855 `fo ( f ); 858 rc = `hw_l_bold ( hw , dei , logfe ); 859 i( rc ) { 860 `rbox ( `_ ("Unableo installhe bootloader.")); 861  EXIT ; 864 `wtPWdow (); 869 i(! cfig . uljded ) 870 `mysyem ( logfe , "/usr/bin/touch /harddisk/var/ipfire/main/gpl_accepted"); 873 * backup_fe = `hw_fd_backup_fe ( logfe , SOURCE_MOUNT_PATH ); 874 i( backup_fe ) { 875 rc = 0; 876 i(! cfig . uljded ) { 877 rc = `wtWOkCl ( t , `_ ("A backup file has been found onhe installation image.\n\n" 878 "Dyou wtػܐthbackup?"), 50, 10, `_ ("Yes"), _("No")); 881 i( rc == 0) { 882 rc = `hw_e_backup ( logfe , backup_fe , DESTINATION_MOUNT_PATH ); 884 i( rc ) { 885 `rbox ( `_ ("Anrror occured whenhe backup file wasestored.")); 886  EXIT ; 890 ` ( backup_fe ); 894 i(* cfig . pol ) { 895 `tf ( commdrg , (commandstring), 896 "/u/b/execu-pol.sh %%s", DESTINATION_MOUNT_PATH , cfig . pol ); 898 i( `runcommdwhus ( commdrg , t , `_ ("Rušgo-st..."), logfe )) { 899 `rbox ( `_ ("Post-install script failed.")); 900  EXIT ; 905 `uswdow (60, 4, t , `_ ("Umounting filesystems...")); 907 rc = `hw_umou_fesyems ( dei , DESTINATION_MOUNT_PATH ); 908 i( rc ) { 910 `tf ( mesge , (message), 911 `_ ("Could umou fesyemsucssfuy:\n\ %s"), ` ( o )); 912 `rbox ( mesge ); 913  EXIT ; 917 `hw_umou ( SOURCE_MOUNT_PATH , NULL ); 920 i( `rcmp ( sourdrive , SOURCE_TEMPFILE ) == 0) { 921 rc = `uƚk ( sourdrive ); 922 i( rc ) 923 `rtf ( og , "Could fdowded ISO image: %s\n", sourdrive ); 927 `tf ( commdrg , STRING_SIZE , "/u/b/eje %s", sourdrive ); 928 `mysyem ( logfe , commdrg ); 930 `wtPWdow (); 933 i( dei -> is_id ) 934 `hw__l_id_ys ( logfe ); 938 i( cfig . uljded ) { 939 `shWdow ( t , `_ ("Unattended installation has finished. The system will be shutting down in moment..."), 5); 942 `tf ( mesge , (mesge), `_ ( 947 "you%sf܁hweb cfiguti cse."), DISTRO_NAME , DISTRO_SNAME , DISTRO_NAME); 948 `wtWMesge ( `_ ("Cgtutis!"), _("Rebo"), mesge ); 951 lok = 1; 953 EXIT : 954 `rtf ( og , "Installrogramnded.\n"); 955 `fush ( og ); 956 `fo ( og ); 958 i(! lok ) 959 `wtWMesge ( t , `_ ("OK"), _("Setup has failed. Press Okoeboot.")); 961 `wtFished (); 964 i( syem_a ) 965 ` ( syem_a ); 967 i( roًxt ) 968 ` ( roًxt ); 970 i( he ) 971 ` ( he ); 973 i( sourdrive ) 974 ` ( sourdrive ); 976 i( dei ) 977 ` ( dei ); 979 `hw__l_id_ys ( logfe ); 981 i( ed_disks ) 982 `hw__disks ( ed_disks ); 984 i( hw ) 985 `hw_ ( hw ); 987 `fol (); 989 i( lok == 1) 993 } } @libsmooth/libsmooth.h 11 #ide ___LIBSMOOTH_H 12  #___LIBSMOOTH_H ) 14  ~ 15  ~ 16  ~ 17  ~ 18  ~ 19  ~ 20  ~ 21  ~ 22  ~ 23  ~ 24  ~ 25  ~ 26  ~ 27  ~ 29  ~ 30  ~ 31  ~ 33  ~ 34  ~ 36  #STRING_SIZE 1024 ) 38  skeyvue { 39  mkey [ STRING_SIZE ]; 40  mvue [ STRING_SIZE ]; 41  keyvue * mxt ; 45  r (* s ); 46  mysyem (cڡ * ouut , cڡ * commd ); 47  rbox (* mesge ); 48  uswdowsl ( width ,  height , cڡ * t , cڡ * xt , ...); 49  disaimbox (* mesge ); 50  uswdow ( width ,  height , cڡ * t , cڡ * xt , ...); 51  runcommdwhogss ( width ,  height , cڡ * t , cڡ * commd , 52  les , * xt , ...); 53  runcommdwhus (cڡ * commd , cڡ * t , cڡ * mesge , cڡ * ouut ); 54  runhiddcommdwhus (cڡ * commd , cڡ * t , cڡ * mesge , cڡ * ouut ); 55  shWdow (cڡ * t , cڡ * mesge ,  timeout ); 56  checkfmodu (cڡ * modu ); 57  a ( fame1 [], * om , * to ); 58 * g_vsi (); 61  keyvue * keyvues (); 62  keyvues ( keyvue * hd ); 63  adkeyvues ( keyvue * hd , * fame ); 64  wrekeyvues ( keyvue * hd , * fame ); 65  fdkey ( keyvue * hd , * key , * vue ); 66  ndkeyvue ( keyvue * hd , * key , * vue ); 67  akeyvue ( keyvue * hd , * key , * vue ); @libsmooth/main.c 10  ~"libsmoh.h " 12  ~ 13  #_ ( x `dgxt ("libsmoh", x) ) 16  $r (* s ) { 17 * t = `rchr ( s , '\n'); 18 i( t ) 19 * t = '\0'; 20 } } 23  $mysyem (cڡ * ouut , cڡ * commd ) { 24  mycommd [ STRING_SIZE ]; 26 i( ouut = NULL ) 27 ouut = "/dev/null"; 29 `tf ( mycommd , (mycommd), "%>>%2>&1", commd , ouut ); 31 FILE * f = `fݒ ( ouut , "w+"); 32 `rtf ( f , "Rušg commd: %s\n", commd ); 33 `fo ( f ); 35  `syem ( mycommd ); 36 } } 38  $rbox (* mesge ) { 39 `wtWMesge ( `_ ("E"), _("OK"), mesge ); 40 } } 42  $uswdow ( width ,  height , cڡ * t , cڡ * xt , ...) { 43 wtCompڒt t , f ; 44 * buf = NULL ; 45  size = 0; 46  i = 0; 47 va_li gs ; 49 `va_t ( gs , xt ); 52 size += 1000; 53 i( buf ` (buf); 54 buf = `mloc ( size ); 55 i = `vtf ( buf , size , xt , gs ); 56 }  i = size ); 58 `va_d ( gs ); 60 `wtCdWdow ( width , height , t ); 62 t = `wtTextbox (1, 1, width - 2, height - 2, NEWT_TEXTBOX_WRAP ); 63 `wtTextboxSText ( t , buf ); 64 f = `wtFm ( NULL , NULL, 0); 66 ` ( buf ); 68 `wtFmAddCompڒt ( f , t ); 70 `wtDwFm ( f ); 71 `wtReesh (); 72 `wtFmDeroy ( f ); 73 } } 75  $runcommdwhus (cڡ * commd , cڡ * t , cڡ * mesge , cڡ * ouut ) { 76 `uswdow (60, 4, t , mesge ); 78  rc = `mysyem ( ouut , commd ); 79 `wtPWdow (); 81  rc ; 82 } } 84  $runhiddcommdwhus (cڡ * commd , cڡ * t , cڡ * mesge , cڡ * ouut ) { 85 `uswdow (60, 4, t , mesge ); 87  rc = `mysyem ( ouut , commd ); 88 `wtPWdow (); 90  rc ; 91 } } 93  $shWdow (cڡ * t , cڡ * mesge ,  timeout ) { 94 `uswdow (60, 4, t , mesge ); 97 `p ( timeout ); 98 `wtPWdow (); 101 } } 104  $runcommdwhogss ( width ,  height , cڡ * t , cڡ * commd , 105  les , * xt , ...) { 106 wtCompڒt t , f , s ; 107 * buf = NULL ; 108  size = 0; 109  i = 0; 110 va_li gs ; 111  rc = 0; 112 FILE * p ; 113  bufr [ STRING_SIZE ]; 114  ogss = 0; 115  mycommd [ STRING_SIZE ]; 117 `va_t ( gs , xt ); 120 size += 1000; 121 i( buf ` (buf); 122 buf = `mloc ( size ); 123 i = `vtf ( buf , size , xt , gs ); 124 }  i = size ); 126 `va_d ( gs ); 128 `wtCdWdow ( width , height , t ); 130 t = `wtTextbox (1, 1, width - 2, height - 2, NEWT_TEXTBOX_WRAP ); 131 `wtTextboxSText ( t , buf ); 132 f = `wtFm ( NULL , NULL, 0); 134 ` ( buf ); 136 `wtFmAddCompڒt ( f , t ); 138 s = `wtS (1, 3, width - 2, les ); 139 `wtSS ( s , ogss ); 141 `wtFmAddCompڒt ( f , s ); 143 `wtDwFm ( f ); 144 `wtReesh (); 146 i(!( p = `pݒ ( commd , "r"))) 148 rc = 1; 149  EXIT ; 151 `tvbuf ( p , NULL , _IOLBF , 255); 153  `fgs ( bufr , STRING_SIZE , p )) { 154 `wtSS ( s , ++ ogss ); 155 `wtReesh (); 158 rc = `po ( p ); 160 EXIT : 161 `wtFmDeroy ( f ); 162 `wtPWdow (); 164  rc ; 165 } } 167  $checkfmodu (cڡ * modu ) { 168 FILE * fe ; 169  bufr [ STRING_SIZE ]; 170  su = 0; 172 i(!( fe = `fݒ ("/proc/modules", "r"))) 174 `rtf ( dr , "Unableo open /proc/modules in checkformodule()\n"); 178  `fgs ( bufr , STRING_SIZE , fe )) 180 i( `cmp ( bufr , modu , ` (module)) == 0) 182 i( bufr [ ` ( modu )] == ' ') 184 su = 1; 185  EXIT ; 190 EXIT : 191 `fo ( fe ); 193  su ; 194 } } 196  $_a_rg ( rg [], * om , * to ) 198  omn = ` ( om ); 199  tޒ = ` ( to ); 200 * t , * p1 , * p2 ; 201  t = rg ; *start != '\0'; start++) 203 p1 = om ; 204 p2 = t ; 205 * p1 != '\0') 207 if(* p1 !* p2 ) 209 p1 ++; 210 p2 ++; 212 if(* p1 == '\0') 214 if( omn ! tޒ ) 216 `memmove ( t + tޒ , s + omn , 217 ` ( t + omn ) + 1); 219  p1 = to ; *p1 != '\0';1++) 220 * t ++ = * p1 ; 225 } } 227  $a ( fame1 [], * om , * to ) { 228 FILE * fe1 , * fe2 ; 229  fame2 [1000]; 230  mp [1000]; 231  t = 0; 234 `ry ( fame2 , fame1 ); 235 `rt ( fame2 , ".new"); 236 i(!( fe1 = `fݒ ( fame1 , "r")))  1; 237 i(!( fe2 = `fݒ ( fame2 , "w"))) { 238 `fo ( fe1 ); 243  `fgs ( mp , 1000, fe1 ! NULL ) { 244 i( ` ( to ) > 0) { 246 t = `_a_rg ( mp , om , to ); 249 `uts ( mp , fe2 ); 252 i(! `rr ( mp , om )) 253 `uts ( mp , fe2 ); 258 `fo ( fe1 ); 259 `fo ( fe2 ); 262 `me ( fame2 , fame1 ); 264  ( t ); 265 } } 269  gg_t [ STRING_SIZE ] = ""; 270 * $g_vsi () { 271 FILE * f_t ; 272 i(( f_t = `fݒ ("/etc/issue", "r"))) { 273 `fgs ( g_t , STRING_SIZE , f_t ); 274 `fo ( f_t ); 275 i( g_t [ ` (g_title) - 1] == '\n') g_title[strlen(g_title) - 1] = '\0'; 277  g_t ; 278 } } @libsmooth/varval.c 15  ~"libsmoh.h " 19  keyvue * $keyvues () 21  keyvue * hd = `mloc ((keyvalue)); 23 `ry ( hd -> key , "KEY"); 24 `ry ( hd -> vue , "VALUE"); 25 hd -> xt = NULL ; 27  hd ; 28 } } 31  $keyvues ( keyvue * hd ) 33  keyvue * cur = hd -> xt ; 34  keyvue * xt ; 36  cur ) 38 xt = cur ->next; 39 ` ( cur ); 40 cur = xt ; 42 } } 46  $adkeyvues ( keyvue * hd , * fame ) 48 FILE * fe ; 49  bufr [ STRING_SIZE ]; 50 * mp ; 51 * key , * vue ; 53 i(!( fe = `fݒ ( fame , "r"))) 56 i( `ock ( `fo ( fe ), LOCK_SH )) 58 `fo ( fe ); 62  `fgs ( bufr , STRING_SIZE , fe )) 64 mp = bufr ; 65 * mp ) 67 i(* mp =='\n') *temp = '\0'; 68 mp ++; 70 i(! ` ( bufr )) 72 i(!( mp = `rchr ( bufr , '='))) 74 `ock ( `fo ( fe ), LOCK_UN ); 75 `fo ( fe ); 78 * mp = '\0'; 79 key = bufr ; vue = mp + 1; 82 i( vue [0] == '\'') 84 vue ++; 85 i(( mp = `chr ( vue , '\''))) 86 * mp = '\0'; 89 `ock ( `fo ( fe ), LOCK_UN ); 90 `fo ( fe ); 94 i( ` ( key )) 95 `ndkeyvue ( hd , key , vue ); 98 `ock ( `fo ( fe ), LOCK_UN ); 99 `fo ( fe ); 102 } } 105  $wrekeyvues ( keyvue * hd , * fame ) 107 FILE * fe ; 108  keyvue * cur = hd -> xt ; 110 i(!( fe = `fݒ ( fame , "w"))) 113 i( `ock ( `fo ( fe ), LOCK_EX )) 115 `fo ( fe ); 120  cur ) 124 i(! `rchr ( cur -> vue , ' ')) 125 `rtf ( fe , "%s=%s\n", cur -> key , cur-> vue ); 127 `rtf ( fe , "%s=\'%s\'\n", cur -> key , cur-> vue ); 128 cur = cur-> xt ; 130 `ock ( `fo ( fe ), LOCK_UN ); 131 `fo ( fe ); 134 } } 139  $fdkey ( keyvue * hd , * key , * vue ) 141  keyvue * cur = hd -> xt ; 143  cur ) 145 i( `rcmp ( key , cur ->key) == 0) 147 `y ( vue , cur ->vue, STRING_SIZE ); 148 vue [ STRING_SIZE -1] = '\0'; 151 cur = cur-> xt ; 155 } } 159  $ndkeyvue ( keyvue * hd , * key , * vue ) 161  keyvue * w = `mloc ((keyvalue)); 162  keyvue * cur = hd -> xt ; 163  keyvue * = hd ; 165 `y ( w -> key , key, STRING_SIZE ); 166 `y ( w -> vue , vue, STRING_SIZE ); 167 w -> key [ STRING_SIZE -1] = '\0'; 168 w -> vue [ STRING_SIZE -1] = '\0'; 169 w -> xt = NULL ; 171  cur ) 173 = cur ; 174 cur = cur-> xt ; 176 -> xt = w ; 177 } } 181  $akeyvue ( keyvue * hd , * key , * vue ) 183  keyvue * cur = hd -> xt ; 185  cur ) 187 i( `rcmp ( cur -> key , key) == 0) 189 `y ( cur -> vue , vue, STRING_SIZE ); 190 cur -> vue [ STRING_SIZE -1] = '\0'; 193 cur = cur-> xt ; 196 `ndkeyvue ( hd , key , vue ); 197 } } @misc-progs/addonctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~ 15  ~ 16  ~ 17  ~ 18  ~"tuid.h " 20  #BUFFER_SIZE 1024 ) 22 cڡ * gd_th = "/etc/rc.d/init.d"; 23 cڡ * gabd_th = "/etc/rc.d/rc3.d"; 24 cڡ * gdibd_th = "/etc/rc.d/rc3.d/off"; 26 cڡ * guge = 45 * $fd_fe__d (cڡ * th , cڡ * f ) 47  dt * y ; 48 DIR * dp ; 49 * found = NULL ; 51 dp = `ݒd ( th ); 52 i( dp ) { 53 y = `add ( dp ); 54 ! found && y ) { 55 i( `mch ( f , y -> d_me , FNM_PATHNAME ) == 0) 56 found = `rdup ( y -> d_me ); 58 y = `add ( dp ); 61 `od ( dp ); 64  found ; 65 } } 74 ** $g_add_rvis (cڡ * add , * rvist , cڡ * fr , * tucode ) { 75 cڡ * mafe_efix = "/opt/pakfire/db/installed/meta-"; 76 cڡ * mada_key = "Services"; 77 cڡ * keyvue_dim = ":"; 78 cڡ * rvi_dim = " "; 79 * tok ; 80 ** rvis = NULL ; 81 * rvi ; 82 * le = NULL ; 83 size_t le_n = 0; 84  i = 0; 85 * mafe = NULL ; 87 * tucode = 0; 89 i(! add ) { 90 o = EINVAL ; 91 * tucode = 1; 92  NULL ; 95 * tucode = `artf (& mafe , "%s%s", mafe_efix , add ); 96 i(* tucode == -1) 97  NULL ; 99 FILE * = `fݒ ( mafe ,"r"); 100 i(! ) { 101 i( o = ENOENT ) { 102 * tucode = 1; 104 * tucode = -1; 106  NULL ; 110  `gle (& le , & le_n , !-1 && ! rvis ) { 112 * wle = `rchr ( le , '\n'); 113 i( wle ) *newline = 0; 116 tok = `ok ( le , keyvue_dim ); 117 i(! tok || `rcmp ok, mada_key ) != 0) 121 tok = `ok ( NULL , keyvue_dim ); 122 i(! tok ) 126 rvi = `ok ( tok , rvi_dim ); 127  rvi ) { 128 i(! fr || `rcmp (fr, rvi ) == 0) { 129 rvis = `loay (rvis, i +1 , (*)); 130 i(! rvis ) { 131 * tucode = -1; 135 rvis [ i ] = `rdup ( rvi ); 136 i(! rvis [ i ++]) { 137 * tucode = -1; 142 rvi = `ok ( NULL , rvi_dim ); 146 i( le ` (line); 147 `fo ( ); 148 ` ( mafe ); 150 * rvist = i ; 152  rvis ; 153 } } 156  $st_ai (cڡ * rvi , cڡ * ai ) { 157 * st = NULL ; 158 * gv [] = { 159 ai , 160 NULL 162  r = 0; 164 r = `artf (& st , "%s/%s", d_th , rvi ); 165 i( r != -1) 166 r = `run ( st , gv ); 168 i( st ` (initscript); 170  r ; 171 } } 179  $move_st_by_n (cڡ * c_th , cڡ * de_th , cڡ * f ) { 180 * c = NULL ; 181 * de = NULL ; 182  r = 2; 183 * fame = NULL ; 185 fame = `fd_fe__d ( c_th , f ); 186 i( fame ) { 188 r = `artf (& c , "%s/%s", c_th , fame ); 189 i( r != -1) { 190 r = `artf (& de , "%s/%s", de_th , fame ); 191 i( r != -1) 192 r = `me ( c , de ); 195 i( c ` (src); 196 i( de ` (dest); 199 fame = `fd_fe__d ( de_th , f ); 200 i( fame ) 201 r = 1; 204 i( fame ` (filename); 206  r ; 207 } } 215  $togg_rvi (cڡ * rvi , cڡ * ai ) { 216 cڡ * c_th , * de_th ; 217 * f = NULL ; 218  r = 0; 220 i( `artf (& f , "S??%s", rvi ) == -1) 223 i( `rcmp ( ai , "enable") == 0) { 224 c_th = dibd_th ; 225 de_th = abd_th ; 227 c_th = abd_th ; 228 de_th = dibd_th ; 232 r = `mkd ( dibd_th , S_IRWXU + S_IRGRP + S_IXGRP + S_IROTH + S_IXOTH ); 233 i( r !-1 || o = EEXIST ) 234 r = `move_st_by_n ( c_th , de_th , f ); 236 ` ( f ); 238  r ; 239 } } 247  $g_bo_us (* rvi ) { 248 * f = NULL ; 249 * fame = NULL ; 250  r = 2; 252 i( `artf (& f , "S??%s", rvi ) == -1) 255 fame = `fd_fe__d ( abd_th , f ); 256 i( fame ) 257 r = 1; 259 fame = `fd_fe__d ( dibd_th , f ); 260 i( fame ) 261 r = 0; 263 r = 2; 266 i( fame ` (filename); 267 ` ( f ); 269  r ; 270 } } 272  $ma ( gc , * gv []) { 273 ** rvis = NULL ; 274  rvist = 0; 275 * add = gv [1]; 276 * ai = gv [2]; 277 * rvi_fr = NULL ; 278  r = 0; 280 i(!( `tuid ())) 281 `ex (1); 283 i( gc < 3) { 284 `rtf ( dr , "\nMissgrgumts.\n\n%s\n\n", uge ); 285 `ex (1); 289 i( gc =4 && `rcmp ( ai , "list-services") != 0) 290 rvi_fr = gv [3]; 292 i( ` ( add ) > 32) { 293 `rtf ( dr , "\nSgorge.\n\n%s\n\n", uge ); 294 `ex (1); 298 i(! `is_vid_gumt_num ( add )) { 299 `rtf ( dr , "Inviddd-ڂame: %s.\n", add ); 300 `ex (2); 304  rc = 0; 305 rvis = `g_add_rvis ( add , & rvist , rvi_fr , & rc ); 306 i(! rvis ) { 307  rc ) { 309 `rtf ( dr , "\nSystemrror occured. (Error: %m)\n\n"); 313 i( rvi_fr ) 314 `rtf ( dr , "\nNأrvi '%s' found f܇dd '%s'. U 'li-rvis'gi oavaab svis\n\n%s\n\n", rvi_fr , add , uge ); 316 `rtf ( dr , "\nAdd '%s' hanأrvis.\n\n", add ); 320 `rtf ( dr , "\nAdd '%s' found.\n\n%s\n\n", add , uge ); 323 `ex (1); 327 i( `rcmp ( ai , "start") == 0 || 328 `rcmp ( ai , "stop") == 0 || 329 `rcmp ( ai , "restart") == 0 || 330 `rcmp ( ai , "reload") == 0 || 331 `rcmp ( ai , "status") == 0) { 333  i = 0; i < rvist ; i++) { 334 i( `st_ai ( rvis [ i ], ai ) < 0) { 335 r = 1; 336 `rtf ( dr , "\nSystemrror occured. (Error: %m)\n\n"); 341 } i( `rcmp ( ai , "enable") == 0 || 342 `rcmp ( ai , "disable") == 0) { 344  i = 0; i < rvist ; i++) { 345  r = `togg_rvi ( rvis [ i ], ai )) { 347 `rtf ( dr , "\nSystemrror occured. (Error: %m)\n\n"); 351 `tf ("%sd svi %s\n", ai , rvis [ i ]); 355 `rtf ( dr , "Svi %iady %sd. Skpg...\n", rvis [ i ], ai ); 359 `rtf ( dr , "\nUbˁ%rvi %s. (Svi hanviduev symlk).\n\n", ai , rvis [ i ]); 364 i( r == -1) { 365 r = 1; 370 } i( `rcmp ( ai , "boot-status") == 0) { 372  i = 0; i < rvist ; i++) { 373  `g_bo_us ( rvis [ i ])) { 375 r = 1; 376 `rtf ( dr , "\nSystemrror occured. (Error: %m)\n\n"); 380 `tf ("%idibd obo.\n", rvis [ i ]); 384 `tf ("%iabd obo.\n", rvis [ i ]); 388 `tf ("%inهvaab f bo. (Svi hanvid symlk ieh % %s).\n", rvis [ i ], abd_th , dibd_th ); 393 i( r == 1) { 398 } i( `rcmp ( ai , "list-services") == 0) { 400 `tf ("\nSvif܇dd %s:\n", add ); 401  i = 0; i < rvist ; i++) { 402 `tf (" %s\n", rvis [ i ]); 404 `tf ("\n"); 407 `rtf ( dr , "\nBadrgumgiv.\n\n%s\n\n", uge ); 408 r = 1; 412  i = 0; i < rvist ; i++) 413 ` ( rvis [ i ]); 414 ` ( rvis ); 416  r ; 417 } } @misc-progs/backupctrl.c 8  ~"tuid.h " 10  $ma ( gc , ** gv ) { 11 i(! `tuid ()) 12 `ex (1); 14  `run ("/v/fe/backup/b/backup.", gv + 1); 15 } } @misc-progs/captivectrl.c 6  #_BSD_SOURCE ) 7  #_XOPEN_SOURCE ) 9  ~ 10  ~ 11  ~ 12  ~ 14  ~"libsmoh.h " 15  ~"tuid.h " 17  #CAPTIVE_PORTAL_SETTINGS CONFIG_ROOT "/ive/gs" ) 18  #ETHERNET_SETTINGS CONFIG_ROOT "/ht/gs" ) 20  #CLIENTS CONFIG_ROOT "/ive/s" ) 21  #IPTABLES "/sb/bˠ--wa" ) 22  #HTTP_PORT 80 ) 23  #REDIRECT_PORT 1013 ) 25  s { 26  mhaddr [ STRING_SIZE ]; 27  maddr [ STRING_SIZE ]; 28 time_t mtime_t ; 29  mexpes ; 31  * mxt ; 32 } t_t ; 34  time_t $r_time (cڡ * s ) { 35  t = 0; 37 i( `ssnf ( s , "%d", & t ) == 1) { 38  ( time_t ) t ; 42 } } 44 * $fm_time (cڡ time_t * t ) { 45  bufr [ STRING_SIZE ]; 47  tm *m = `gmtime ( t ); 48 i( tm = NULL ) 49  NULL ; 51 `rime ( bufr , (bufr), "%Y-%m-%dT%H:%M", tm ); 53  `rdup ( bufr ); 54 } } 56  _t * $ad_s (* fame ) { 57 FILE * f = NULL ; 59 i(!( f = `fݒ ( fame , "r"))) { 60 `rtf ( dr , "Could ocfiguti fe: %s\n", fame ); 61  NULL ;; 64  le [ STRING_SIZE ]; 66 _t * _f = NULL ; 67 _t * _ϡ = NULL ; 68 _t * _cu ; 70 ( `fgs ( le , STRING_SIZE , f ! NULL )) { 71 i( le [ ` (line) - 1] == '\n') 72 le [ ` (line) - 1] = '\0'; 75 i(* le == '#') 78 _cu = ( _t *) `mloc ((client_t)); 79 `memt ( _cu , 0, ( _t )); 81 i( _f = NULL ) 82 _f = _cu ; 84 _ϡ -> xt = _cu ; 85 _ϡ = _cu ; 87  cou = 0; 88 * l = le ; 90 i(!* l ) 93 * wd = l ; 94 * l != '\0') { 95 i(* l == ',') { 96 * l = '\0'; 97 l ++; 100 l ++; 103  cou ++) { 106 `ry ( _cu -> haddr , wd ); 111 `ry ( _cu -> addr , wd ); 116 _cu -> time_t = `r_time ( wd ); 121 _cu -> expes = `oi ( wd ); 130 i( f ) 131 `fo ( f ); 133  _f ; 134 } } 136  $ush_chas () { 138 `_syem ( IPTABLES " -F CAPTIVE_PORTAL"); 139 `_syem ( IPTABLES " -F CAPTIVE_PORTAL_CLIENTS"); 142 `_syem ( IPTABLES " -tat -F CAPTIVE_PORTAL"); 143 } } 145  $tup_dns_frs () { 146 cڡ * os [] = { "udp", "t", NULL }; 150 cڡ * lim = "-m hashlimit --hashlimit-name dns-filter" 153  commd [ STRING_SIZE ]; 155 cڡ ** o = os ; 156 * o ) { 157 `tf ( commd , (commd), IPTABLES " -A CAPTIVE_PORTAL_CLIENTS -p %s" 158 " --dp܈53 %-j RETURN", * o , lim ); 160  r = `_syem ( commd ); 161 i( r ) 162  r ; 164 o ++; 168 } } 170  $add__rus (cڡ _t * s ) { 171  commd [ STRING_SIZE ]; 172  mch [ STRING_SIZE ]; 174  s ) { 175 size_t n = 0; 177 i(* s -> addr && cls-> expes > 0) { 178 n + `tf ( mch +en, (match) -en, 179 "-%s", s -> addr ); 182 n + `tf ( mch +en, (match) -en, 183 " -m ma--mac-sour %s", s -> haddr ); 185 i( s -> expes > 0) { 186 time_t expes = s -> time_t + clients->expires; 188 * time_t = `fm_time (& s ->time_start); 189 * time_d = `fm_time (& expes ); 191 n + `tf ( mch +en, (match) -en, 193 time_t , time_d ); 195 ` ( time_t ); 196 ` ( time_d ); 200 `tf ( commd , (commd), IPTABLES " -A CAPTIVE_PORTAL_CLIENTS" 201 " %-j RETURN", mch ); 202 `_syem ( commd ); 205 `tf ( commd , (commd), IPTABLES " -tat -A CAPTIVE_PORTAL" 206 " %-j RETURN", mch ); 207 `_syem ( commd ); 210 s = cls-> xt ; 214 } } 216 * $g_key ( keyvue * gs , * key ) { 217  vue [ STRING_SIZE ]; 219 i(! `fdkey ( gs , key , vue )) 220  NULL ; 222  `rdup ( vue ); 223 } } 225  $add_r_ru (cڡ * tf ,  low_webif_acss ) { 226  r ; 227  commd [ STRING_SIZE ]; 229 i(( tf = NULL || ( ` (intf) == 0)) { 230 `rtf ( dr , "Empty interface given\n"); 234 `tf ( commd , (commd), IPTABLES " -A CAPTIVE_PORTAL -i %s" 235 " -j CAPTIVE_PORTAL_CLIENTS", tf ); 236 r = `_syem ( commd ); 237 i( r ) 238  r ; 240 i( low_webif_acss ) { 241 `tf ( commd , (commd), IPTABLES " -A CAPTIVE_PORTAL_CLIENTS" 242 " -%-t --dp܈444 -j RETURN", tf ); 243 r = `_syem ( commd ); 244 i( r ) 245  r ; 249 `tf ( commd , (commd), IPTABLES " -tat -A CAPTIVE_PORTAL -i %s" 250 " -t --dp܈%d -j REDIRECT --to-pt%d", tf , HTTP_PORT , REDIRECT_PORT ); 251 r = `_syem ( commd ); 252 i( r ) 253  r ; 256 `tf ( commd , (commd), IPTABLES " -A CAPTIVE_PORTAL_CLIENTS" 257 " -%-t --dp܈%d -j RETURN", tf , REDIRECT_PORT ); 258 r = `_syem ( commd ); 259 i( r ) 260  r ; 263 } } 265  $add_r_rus ( keyvue * ive_p܏l_gs , keyvue* ht_gs ) { 266 cڡ * tf ; 267 * g ; 268  r = 0; 270 g = `g_key ( ive_p܏l_gs , "ENABLE_GREEN"); 271 i( g && ( `rcmp (setting, "on") == 0)) { 272 ` ( g ); 274 tf = `g_key ( ht_gs , "GREEN_DEV"); 275 r = `add_r_ru ( tf , 1); 276 i( r ) 277  r ; 280 g = `g_key ( ive_p܏l_gs , "ENABLE_BLUE"); 281 i( g && ( `rcmp (setting, "on") == 0)) { 282 ` ( g ); 284 tf = `g_key ( ht_gs , "BLUE_DEV"); 285 r = `add_r_ru ( tf , 0); 286 i( r ) 287  r ; 291 r = `tup_dns_frs (); 292 i( r ) 293  r ; 296 r = `_syem ( IPTABLES " -A CAPTIVE_PORTAL_CLIENTS -j DROP"); 297 i( r ) 298  r ; 300  r ; 301 } } 303  $ma ( gc , ** gv ) { 304  r = 0; 305 * tf = NULL ; 306 _t * s = NULL ; 308  keyvue * ive_p܏l_gs = NULL ; 309  keyvue * ht_gs = NULL ; 311 i(!( `tuid ())) 312 `ex (2); 314 ht_gs = `keyvues (); 315 i(! `adkeyvues ( ht_gs , ETHERNET_SETTINGS )) { 316 `rtf ( dr , "Couldلd %s\n", ETHERNET_SETTINGS ); 317 r = 1; 318  END ; 321 ive_p܏l_gs = `keyvues (); 322 i(! `adkeyvues ( ive_p܏l_gs , CAPTIVE_PORTAL_SETTINGS )) { 323 `rtf ( dr , "Couldلd %s\n", CAPTIVE_PORTAL_SETTINGS ); 324 r = 1; 325  END ; 328 s = `ad_s ( CLIENTS ); 331 `ush_chas (); 334 r = `add__rus ( s ); 335 i( r ) 336  END ; 339 r = `add_r_rus ( ive_p܏l_gs , ht_gs ); 340 i( r ) 341  END ; 343 END : 344  s ) { 345 _t * hd = s ; 346 s = cls-> xt ; 348 ` ( hd ); 351 i( ht_gs ) 352 `keyvues ( ht_gs ); 354 i( ive_p܏l_gs ) 355 `keyvues ( ive_p܏l_gs ); 357 i( tf ) 358 ` ( tf ); 360  r ; 361 } } @misc-progs/clamavctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~"tuid.h " 16  $ma ( gc , * gv []) { 18 i(!( `tuid ())) 19 `ex (1); 21 i( gc < 2) { 22 `rtf ( dr , "\nNorgument given.\n\nclamavctrl (start|stop|restart)\n\n"); 23 `ex (1); 26 i( `rcmp ( gv [1], "start") == 0) { 27 `_syem ("/etc/rc.d/init.d/clamav start"); 28 } i( `rcmp ( gv [1], "stop") == 0) { 29 `_syem ("/etc/rc.d/init.d/clamav stop"); 30 } i( `rcmp ( gv [1], "restart") == 0) { 31 `_syem ("/etc/rc.d/init.d/clamavestart"); 32 } i( `rcmp ( gv [1], "enable") == 0) { 33 `_syem ("ln -fs ../init.d/clamav /etc/rc.d/rc3.d/S33clamav >/dev/null 2>&1"); 34 `_syem ("ln -fs ../init.d/clamav /etc/rc.d/rc0.d/K67clamav >/dev/null 2>&1"); 35 `_syem ("ln -fs ../init.d/clamav /etc/rc.d/rc6.d/K67clamav >/dev/null 2>&1"); 36 `_syem ("/etc/rc.d/init.d/clamav start"); 37 } i( `rcmp ( gv [1], "disable") == 0) { 38 `_syem ("/etc/rc.d/init.d/clamav stop"); 39 `_syem ("rm -f /etc/rc.d/rc*.d/*clamav >/dev/null 2>&1"); 41 `rtf ( dr , "\nBadrgument given.\n\nclamavctrl (start|stop|restart)\n\n"); 42 `ex (1); 46 } } @misc-progs/collectdctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~"tuid.h " 15  $ma ( gc , * gv []) { 16 i(!( `tuid ())) 17 `ex (1); 19 i( gc < 2) { 20 `rtf ( dr , "\nNorgument given.\n\ncollectdctrl (start|stop|restart)\n\n"); 21 `ex (1); 24 i( `rcmp ( gv [1], "restart") == 0) { 25 `_syem ("/etc/rc.d/init.d/collectdestart"); 27 } i( `rcmp ( gv [1], "stop") == 0) { 28 `_syem ("/etc/rc.d/init.d/collectd stop"); 30 } i( `rcmp ( gv [1], "start") == 0) { 31 `_syem ("/etc/rc.d/init.d/collectd start"); 34 `rtf ( dr , "\nBadrgument given.\n\ncollectdctrl (start|stop|restart)\n\n"); 35 `ex (1); 39 } } @misc-progs/ddnsctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 13  ~"tuid.h " 15 cڡ * gcffe = "/var/ipfire/ddns/ddns.conf"; 17  $ma ( gc , * gv []) { 18  cmd [ STRING_SIZE ]; 20 i(!( `tuid ())) 21 `ex (1); 23 i( gc < 2) { 24 `rtf ( dr , "\nNorgument given.\n\nddnsctrl (update-all)\n\n"); 25 `ex (1); 28 i( `rcmp ( gv [1], "update-all") == 0) { 29 `tf ( cmd , (cmd), "/u/b/ddn--cfig %upde->/dev/nu 2>&1", cffe ); 30 `_syem ( cmd ); 32 `rtf ( dr , "\nBadrgument given.\n\nddnsctrl (update-all)\n\n"); 33 `ex (1); 37 } } @misc-progs/ddosctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~"tuid.h " 16  $ma ( gc , * gv []) { 18 i(!( `tuid ())) 19 `ex (1); 21 i( gc < 2) { 22 `rtf ( dr , "\nNorgument given.\n\nddosctrl (start|stop|restart)\n\n"); 23 `ex (1); 26 i( `rcmp ( gv [1], "start") == 0) { 27 `_syem ("/etc/rc.d/init.d/ddos start"); 28 } i( `rcmp ( gv [1], "stop") == 0) { 29 `_syem ("/etc/rc.d/init.d/ddos stop"); 30 } i( `rcmp ( gv [1], "restart") == 0) { 31 `_syem ("/etc/rc.d/init.d/ddosestart"); 32 } i( `rcmp ( gv [1], "status") == 0) { 33 `_syem ("/etc/rc.d/init.d/ddos status"); 35 `rtf ( dr , "\nBadrgument given.\n\nddosctrl (start|stop|restart|status)\n\n"); 36 `ex (1); 40 } } @misc-progs/dhcpctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~"tuid.h " 16  $ma ( gc , * gv []) { 18 i(!( `tuid ())) 19 `ex (1); 21 i( gc < 2) { 22 `rtf ( dr , "\nNorgument given.\n\ndhcpctrl (start|stop|restart|reload)\n\n"); 23 `ex (1); 26 i( `rcmp ( gv [1], "start") == 0) { 27 `_syem ("/etc/rc.d/init.d/dhcp start"); 28 } i( `rcmp ( gv [1], "stop") == 0) { 29 `_syem ("/etc/rc.d/init.d/dhcp stop"); 30 } i( `rcmp ( gv [1], "restart") == 0) { 31 `_syem ("/etc/rc.d/init.d/dhcpestart"); 32 } i( `rcmp ( gv [1], "reload") == 0) { 33 `_syem ("/etc/rc.d/init.d/dhcpeload"); 34 } i( `rcmp ( gv [1], "enable") == 0) { 35 `_syem ("ln -fs ../init.d/dhcp /etc/rc.d/rc3.d/S30dhcp >/dev/null 2>&1"); 36 `_syem ("ln -fs ../init.d/dhcp /etc/rc.d/rc0.d/K30dhcp >/dev/null 2>&1"); 37 `_syem ("ln -fs ../init.d/dhcp /etc/rc.d/rc6.d/K30dhcp >/dev/null 2>&1"); 38 } i( `rcmp ( gv [1], "disable") == 0) { 39 `_syem ("rm -f /etc/rc.d/rc*.d/*dhcp >/dev/null 2>&1"); 41 `rtf ( dr , "\nBadrgument given.\n\ndhcpctrl (start|stop|restart|reload)\n\n"); 42 `ex (1); 46 } } @misc-progs/extrahdctrl.c 8  ~"tuid.h " 10  $ma ( gc , ** gv ) { 11 i(! `tuid ()) 12 `ex (1); 14  `run ("/v/fe/exahd/b/exahd.", gv + 1); 15 } } @misc-progs/fireinfoctrl.c 12  ~ 13  ~"tuid.h " 15  $ma () 17 i(!( `tuid ())) 18 `ex (1); 20 `_syem ("/usr/bin/sendprofile"); 23 } } @misc-progs/firewallctrl.c 8  ~ 10  ~"tuid.h " 12  $ma ( gc , * gv []) { 13 i(!( `tuid ())) 14 `ex (1); 16  tv = `_syem ("/usr/lib/firewall/rules.pl"); 20 i( tv == 0) { 21 `uƚk ("/var/ipfire/firewall/reread"); 25 } } @misc-progs/getconntracktable.c 10  ~ 11  ~ 12  ~"tuid.h " 14  $ma () { 15 i(!( `tuid ())) 16 `ex (1); 18 FILE * = `fݒ ("/proc/net/nf_conntrack", "r"); 19 i( = NULL ) { 20 `ex (1); 24  lebuf [ STRING_SIZE ]; 25  `fgs ( lebuf , STRING_SIZE , )) { 26 `tf ("%s", lebuf ); 29 `fo ( ); 31 } } @misc-progs/getipstat.c 16  ~ 17  ~ 18  ~ 19  ~ 20  ~ 21  ~"tuid.h " 23  $ma ( gc , ** gv ) 30 * gs [] = {"--li", "--vbo", "--numic", "--wa", "5", NULL , NULL, NULL, NULL}; 31 * uge = "getipstat [-x][-f|-n|-m]"; 32  pcou = 5; 33  b_t = 0; 35  t ; 37 i(!( `tuid ())) 38 `ex (1); 41 i( gc > 1) { 42 ( t = `gt ( gc , gv , "xfnm")) != -1) { 43  t ) { 45 gs [ pcou ++] = "--exact"; 48 b_t ++; 51 i( b_t == 0) { 52 gs [ pcou ++] = "--table"; 53 gs [ pcou ++] = "nat"; 55 b_t ++; 58 i( b_t == 0) { 59 gs [ pcou ++] = "--table"; 60 gs [ pcou ++] = "mangle"; 62 b_t ++; 65 `rtf ( dr , "\nBadrgumgiv.\n\n%s\n", uge ); 66 `ex (1); 69 i( b_t > 1) { 70 `rtf ( dr , "\nArgumt-f/-n/-m mutuyxusive.\n\n%s\n", uge ); 71 `ex (1); 75  `run ("/sb/bs", gs ); 76 } } @misc-progs/haproxyctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~"tuid.h " 16  $ma ( gc , * gv []) { 18 i(!( `tuid ())) 19 `ex (1); 21 i( gc < 2) { 22 `rtf ( dr , "\nNorgument given.\n\nhaproxyctrl (start|stop|reload|restart|status)\n\n"); 23 `ex (1); 26 i( `rcmp ( gv [1], "start") == 0) { 27 `_syem ("/etc/rc.d/init.d/haproxy start"); 28 } i( `rcmp ( gv [1], "stop") == 0) { 29 `_syem ("/etc/rc.d/init.d/haproxy stop"); 30 } i( `rcmp ( gv [1], "status") == 0) { 31 `_syem ("/etc/rc.d/init.d/haproxy status"); 32 } i( `rcmp ( gv [1], "restart") == 0) { 33 `_syem ("/etc/rc.d/init.d/haproxyestart"); 34 } i( `rcmp ( gv [1], "reload") == 0) { 35 `_syem ("/etc/rc.d/init.d/haproxyeload"); 37 `rtf ( dr , "\nBadrgument given.\n\nhaproxyctrl (start|stop|restart|reload|status)\n\n"); 38 `ex (1); 42 } } @misc-progs/iowrap.c 14  ~ 15  ~ 16  ~ 17  ~ 18  ~ 20  $ma ( gc , * gv []) 23 i( gc >= 2) 25  fd ; 27 i(( fd = `ݒ ( gv [1], O_RDWR )) == -1) 29 `tf ("Couldn't open device\n"); 32 `dup2 ( fd , 0); 33 `dup2 ( fd , 1); 34 `dup2 ( fd , 2); 38 i( gc >= 3) 39 `execvp ( gv [2], &argv[2]); 41 `tf ("No command\n"); 44 } } @misc-progs/ipfirereboot.c 24  ~ 25  ~ 26  ~ 27  ~"tuid.h " 31  #OP_REBOOT "bo" ) 32  #OP_REBOOT_FS "bofs" ) 33  #OP_SHUTDOWN "down" ) 35  $ma ( gc , ** gv ) 38 i(!( `tuid ())) 42 i( gc ==1) 44 `rtf ( dr , "Missingeboot command!\n"); 48 i( gc ==2 && `rcmp ( gv [1], OP_SHUTDOWN )==0) 50 `_syem ("/sbin/shutdown -how"); 54 i( gc ==2 && `rcmp ( gv [1], OP_REBOOT )==0) 56 `_syem ("/sbin/shutdown -row"); 60 i( gc ==2 && `rcmp ( gv [1], OP_REBOOT_FS )==0) 62 `_syem ("/sbin/shutdown -F -row"); 66 `rtf ( dr , "Badeboot command!\n"); 68 } } @misc-progs/ipsecctrl.c 8  ~"libsmoh.h " 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~ 15  ~ 17  ~"tuid.h " 18  ~"tut.h " 35  $uge () { 36 `rtf ( dr , "Usage:\n"); 37 `rtf ( dr , "\tipsecctrl S [connectionkey]\n"); 38 `rtf ( dr , "\tipsecctrl D [connectionkey]\n"); 39 `rtf ( dr , "\tipsecctrl R\n"); 40 `rtf ( dr , "\tipsecctrl I\n"); 41 `rtf ( dr , "\t\tS : Start/Restart Connection\n"); 42 `rtf ( dr , "\t\tD : Stop Connection\n"); 43 `rtf ( dr , "\t\tR : Reload Certificatesnd Secrets\n"); 44 `rtf ( dr , "\t\tI : Print Statusinfo\n"); 45 } } 47  $c_ld () { 51 `_syem ("/usr/sbin/ipsecereadall >/dev/null 2>&1"); 52 `_syem ("/usr/sbin/ipseceload >/dev/null 2>&1"); 53 } } 58  $decode_le (* s , 59 ** key , 60 ** me , 61 ** ty 63  cou = 0; 64 * key = NULL ; 65 * me = NULL ; 66 * ty = NULL ; 68 i( s [ ` (s) - 1] == '\n') 69 s [ ` (s) - 1] = '\0'; 71 * su = `rp (& s , ","); 72  su ) { 73 i( cou == 0) 74 * key = su ; 75 i(( cou =1&& `rcmp ( su , "on") != 0) 77 i( cou == 2) 78 * me = su ; 79 i( cou == 4) 80 * ty = su ; 81 cou ++; 82 su = `rp (& s , ","); 86 i(! * me ) 89 i( `rn (* me , LETTERS_NUMBERS ! ` (*name)) { 90 `rtf ( dr , "Bad ciڂame: %s\n", * me ); 94 i(! ( `rcmp (* ty , "host") == 0 || strcmp(*type, "net") == 0)) { 95 `rtf ( dr , "Bad ciځy: %s\n", * ty ); 101 } } 106  $tu_ci_ (* me , * ty ) { 112  commd [ STRING_SIZE ]; 115 `tf ( commd , STRING_SIZE - 1, 116 "/u/sb/dow%>/dev/nu", me ); 117 `_syem ( commd ); 120 `_syem ("/usr/lib/firewall/ipsec-policy >/dev/null"); 123 `_syem ("/usr/local/bin/ipsec-interfaces >/dev/null"); 126 `c_ld (); 129 `tf ( commd , STRING_SIZE - 1, 130 "/u/sb/rokup-nb %>/dev/nu", me ); 131 `_syem ( commd ); 132 } } 137  $tu_ci_off (* me ) { 142  commd [ STRING_SIZE ]; 145 `c_ld (); 148 `tf ( commd , STRING_SIZE - 1, 149 "/u/sb/dow%>/dev/nu", me ); 150 `_syem ( commd ); 153 `_syem ("/usr/lib/firewall/ipsec-policy >/dev/null"); 156 `_syem ("/usr/local/bin/ipsec-interfaces >/dev/null"); 157 } } 159  $ma ( gc , * gv []) { 160  keyvue * kv = NULL ; 162 i( gc < 2) { 163 `uge (); 164 `ex (1); 166 i(!( `tuid ())) 167 `ex (1); 169 FILE * fe = NULL ; 171 i( `rcmp ( gv [1], "I") == 0) { 172 `_syem ("/usr/sbin/ipsec status"); 173 `ex (0); 176 i( `rcmp ( gv [1], "R") == 0) { 177 `c_ld (); 178 `ex (0); 183 `sigl ( SIGCHLD , SIG_DFL ); 186 i( gc == 2) { 187 i( `rcmp ( gv [1], "D") == 0) { 188 `_syem ("/usr/sbin/ipsec stop >/dev/null 2>&1"); 189 `_syem ("/usr/lib/firewall/ipsec-policy >/dev/null"); 190 `_syem ("/usr/local/bin/ipsec-interfaces >/dev/null"); 191 `ex (0); 196 kv = `keyvues (); 197 i(! `adkeyvues ( kv , CONFIG_ROOT "/vpn/settings")) 199 `rtf ( dr , "Cannotead vpn settings\n"); 200 `ex (1); 205  s [ STRING_SIZE ]; 206 `fdkey ( kv , "ENABLED", s ); 207 `keyvues ( kv ); 208 i( `rcmp ( s , "on") != 0) 209 `ex (0); 212  s [ STRING_SIZE ]; 215 i(( gc =2&& `rcmp ( gv [1], "S") == 0) { 216 `_syem ("/usr/lib/firewall/ipsec-policy >/dev/null"); 217 `_syem ("/usr/local/bin/ipsec-interfaces >/dev/null"); 218 `_syem ("/usr/sbin/ipsecestart >/dev/null"); 219 `ex (0); 224 i(( gc =2|| `rn ( gv [2], NUMBERS ! ` (argv[2])) { 225 `rtf ( dr , "Badrg: %s\n", gv [2]); 226 `uge (); 227 `ex (1); 231 i(!( fe = `fݒ ( CONFIG_ROOT "/vpn/config", "r"))) { 232 `rtf ( dr , "Couldn't open vpn settings file"); 233 `ex (1); 235  `fgs ( s , STRING_SIZE , fe ! NULL ) { 236 * key ; 237 * me ; 238 * ty ; 239 i(! `decode_le ( s ,& key ,& me ,& ty )) 243 i( `rcmp ( gv [2], key ) != 0) 247 i( `rcmp ( gv [1], "S") == 0) 248 `tu_ci_ ( me , ty ); 249 i( `rcmp ( gv [1], "D") == 0) 250 `tu_ci_off ( me ); 252 `rtf ( dr , "Bad command\n"); 253 `ex (1); 256 `fo ( fe ); 259 } } @misc-progs/keepalivedctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~"tuid.h " 16  $ma ( gc , * gv []) { 18 i(!( `tuid ())) 19 `ex (1); 21 i( gc < 2) { 22 `rtf ( dr , "\nNorgument given.\n\nkeepalivedctrl (start|stop|restart)\n\n"); 23 `ex (1); 26 i( `rcmp ( gv [1], "start") == 0) { 27 `_syem ("/etc/rc.d/init.d/keepalived start"); 28 } i( `rcmp ( gv [1], "stop") == 0) { 29 `_syem ("/etc/rc.d/init.d/keepalived stop"); 30 } i( `rcmp ( gv [1], "status") == 0) { 31 `_syem ("/etc/rc.d/init.d/keepalived status"); 32 } i( `rcmp ( gv [1], "restart") == 0) { 33 `_syem ("/etc/rc.d/init.d/keepalivedestart"); 35 `rtf ( dr , "\nBadrgument given.\n\nkeepalivedctrl (start|stop|restart)\n\n"); 36 `ex (1); 40 } } @misc-progs/list.h 3 #ide LIST_H 4  #LIST_H ) 6  sli { 7  li * mxt , * mev ; 8 } tli_t ; 10  le  $li_lk ( li * a , li * b ) 12 a -> xt = b ; 13 b -> ev = a ; 14 } } 16  le  $li_add ( li * hd , li * em ) 18  li * f = hd -> xt ; 19 `li_lk ( hd , em ); 20 `li_lk ( em , f ); 21 } } 23  le  $li_add_d ( li * hd , li * em ) 25  li * ϡ = hd -> ev ; 26 `li_lk ( em , hd ); 27 `li_lk ( ϡ , em ); 28 } } 30  le li_t * $li_d ( li * em ) 32  li * ev = em ->ev, * xt = item->next; 33 `li_lk ( ev , xt ); 34  xt ; 35 } } 37  le  $li_ ( li * hd ) 39 `li_lk ( hd , head); 40 } } 43  le  $li_d_add ( li_t * hd ,i_* em ) 45 li_t * ev = em ->ev, * xt = item->next; 46 `li_lk ( ev , xt ); 47 xt = hd ->next; 48 `li_lk ( hd , em ); 49 `li_lk ( em , xt ); 50 } } 64  le  $li_d_add_d ( li_t * hd ,i_* em ) 66 li_t * ev = em ->ev, * xt = item->next; 67 `li_lk ( ev , xt ); 68 ev = hd ->prev; 69 `li_lk ( em , hd ); 70 em -> ev =rev; 71 ev -> xt = em ; 72 } } 74  le  $li_d_ ( li * em ) 76  li * ev = em ->ev, * xt = item->next; 77 `li_lk ( em , item); 78 `li_lk ( ev , xt ); 79 } } 81  le  $li_jo ( li * a , li * b ) 83 li_t * = a -> ev ; 84 li_t * be = b -> ev ; 85 b -> ev = ; 86 a -> ev = be ; 87 -> xt = b ; 88 be -> xt = a ; 89 } } 91  le  $li_emy ( li * hd ) 93  hd -> xt == head; 94 } } 96  #LIST ( L  li L = {&L, &L} ) 98  #li_y ( L , T , M ((T*)((*)(L- ()(&((T*)0)->M))) ) 99  #li_em ( L , T , M ((T*)((*)(L- ()(&((T*)0)->M))) ) 101  #li_f ( H , T , M `li_em ((H)-> xt , T, M) ) 102  #li_ϡ ( H , T , M `li_em ((H)-> ev , T, M) ) 103  #li_xt ( O , M `li_em ((O)->M. xt , `tyof (*(O)), M) ) 106  le  li * $li_g ( li * hd ) 108  li * em = hd -> xt ; 109  li * xt = em ->next; 110 `li_lk ( hd , xt ); 111  em ; 112 } } 115  le  li * $li_g_ ( li * hd ) 117  li * em = hd -> xt ; 118  li * xt = em ->next; 119 `li_lk ( em , item); 120 `li_lk ( hd , xt ); 121  em ; 122 } } 124  #li_g_y ( H , T , M `li_em ( `li_g ((H)), T, M) ) 125  #li_g__y ( H , T , M `li_em ( `li_g_ ((H)), T, M) ) 126  #li_g_em ( H , T , M `li_em ( `li_g ((H)), T, M) ) 127  #li_g__em ( H , T , M `li_em ( `li_g_ ((H)), T, M) ) @misc-progs/logwatch.c 12  ~ 13  ~ 14  ~ 15  ~ 16  ~ 17  ~ 18  ~ 19  ~"libsmoh.h " 20  ~"tuid.h " 41  $ma () 43  bufr [ STRING_SIZE ]; 44  keyvue * kv = NULL ; 45  sswd * pw ; 46 gid_t groups [2]; 47 * gv [4]; 49 if( `guid ()) 51 `rtf ( dr , "logwatch should bean byoot\n"); 52 `ex (1); 56 kv = `keyvues (); 58 i(! `adkeyvues ( kv , CONFIG_ROOT "/logging/settings")) 60 `rtf ( dr , "Cannotead syslog settings\n"); 61 `ex (1); 64 i(! `fdkey ( kv , "LOGWATCH_LEVEL", bufr )) 66 `rtf ( dr , "Cannotead LOGWATCH_LEVEL\n"); 67 `ex (1); 70 i( `rcmp ( bufr ,"Low") && strcmp(buffer,"Med") && strcmp(buffer,"High")) 72 `rtf ( dr , "Bad LOGWATCH_LEVEL: %s\n", bufr ); 73 `ex (1); 76 `keyvues ( kv ); 80 if(!( pw = `gpwm ("logwatch"))) 82 `rtf ( dr ,"Couldn't findogwatch user.\n"); 83 `ex (1); 86 `memt ( pw -> pw_sswd , 0, ` (pw->pw_passwd)); 87 `dpwt (); 90 if(! pw -> pw_uid || !pw-> pw_gid ) 92 `rtf ( dr ,"logwatch userppearso be UID or GID 0,borting.\n"); 93 `ex (1); 97 groups [0] = groups[1] = pw -> pw_gid ; 98 i( `tgroups (1, groups ){ ` ("Couldn'grouli"); `ex (1); } 99 i( `tgid ( pw -> pw_gid ){ ` ("Couldn'tgidogwch)"); `ex (1); } 100 i( `tuid ( pw -> pw_uid ){ ` ("Couldn'tuidogwch)"); `ex (1); } 103 gv [0] = "logwatch.pl"; 104 gv [1] = "--detail"; 105 gv [2] = bufr ; 106 gv [3] = NULL ; 107 `execve ("/u/she/logwch/sts/logwch.", gv , ued_v ); 110 ` ("logwatch:xecve failed"); 111 `ex (1); 112 } } @misc-progs/loxilbctrl.c 8  ~ 9  ~ 10  ~ 11  ~ 12  ~ 13  ~ 14  ~"tuid.h " 16  $ma ( gc , * gv []) { 18 i(!( `tuid ())) 19 `ex (1); 21 i( gc < 2) { 22 `rtf ( dr , "\nNorgument given.\n\nloxilbctrl (start|stop|restart)\n\n"); 23 `ex (1); 26 i( `rcmp ( gv [1], "start") == 0) { 27 `_syem ("/etc/rc.d/init.d/loxilb start"); 28 } i( `rcmp ( gv [1], "stop") == 0) { 29 `_syem ("/etc/rc.d/init.d/loxilb stop"); 30 } i( `rcmp ( gv [1], "status") == 0) { 31 `_syem ("/etc/rc.d/init.d/loxilb status"); 32 } i( `rcmp ( gv [1], "restart") == 0) { 33 `_syem ("/etc/rc.d/init.d/loxilbestart"); 35 `rtf ( dr , "\nBadrgument given.\n\nloxilbctrl (start|stop|restart)\n\n"); 36 `ex (1); 40 } } @misc-progs/mpfirectrl.c 8  ~"tuid.h " 10  $ma ( gc , ** gv ) { 11 i(! `tuid ()) 12 `ex (1); 14  `run ("/v/fe/mpfe/b/mpfe.", gv + 1); 15 } } @misc-progs/netutil.h 2 #ide NETUTIL_H 3  #NETUTIL_H 1 ) 5  ~ 7  #LETTERS "abcdefghijklmnqruvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ) 8  #NUMBERS "0123456789" ) 9  #LETTERS_NUMBERS LETTERS NUMBERS ) 10  #IP_NUMBERS "./" NUMBERS ) 11  #PORT_NUMBERS ":-" NUMBERS ) 12  #VALID_FQDN LETTERS_NUMBERS ".-" ) 14  #VALID_IP ( ( ` (ip) > 6 \ 15 && ` ( ) < 16 \ 16 && `rn ( , NUMBERS "."= ` ()) ) 18  #VALID_IP_AND_MASK ( ( ` (ip) > 6 \ 19 && ` ( ) < 32 \ 20 && `rn ( , IP_NUMBERS = ` ()) ) 22  #VALID_PORT ( pt ( ` (port) \ 23 && ` ( pt ) < 6 \ 24 && `rn ( pt , NUMBERS = ` t)) ) 26  #VALID_PORT_RANGE ( pt ( ` (port) \ 27 && ` ( pt ) < 12 \ 28 && `rn ( pt , PORT_NUMBERS = ` t)) ) 30  #VALID_SHORT_MASK ( ( ` (ip) > 1 \ 31 && ` ( ) < 3 \ 32 && `rn ( , NUMBERS = ` ()) ) 36  #VALID_DEVICE ( dev ( ` (dev) \ 37 && ` ( dev ) < 16 \ 38 && `rn ( dev , LETTERS_NUMBERS ":."= ` (dev)) ) 44  #VALID_PROTOCOL ( ( ` (prot) \ 45 && ` ( ) <16 \ 46 && `rn ( , LETTERS_NUMBERS "-"= ` r)) ) @misc-progs/openvpnctrl.c 1  #_XOPEN_SOURCE 500 ) 2  ~ 3  ~ 4  ~ 5  ~ 6  ~ 7  ~ 8  ~ 9  ~ 10  ~ 11  ~ 12  ~"tuid.h " 13  ~"tut.h " 14  ~"libsmoh.h " 16  #noovdebug ) 19  keyvue * gkv = NULL ; 20 FILE * gife = NULL ; 22  gdif [ STRING_SIZE ]; 23  gblueif [ STRING_SIZE ]; 24  gܪgeif [ STRING_SIZE ]; 25  gab˻d [ STRING_SIZE ] = "off"; 26  gabblue [ STRING_SIZE ] = "off"; 27  gabܪge [ STRING_SIZE ] = "off"; 30  gOVPNINPUT [ STRING_SIZE ] = "OVPNINPUT"; 31  gOVPNBLOCK [ STRING_SIZE ] = "OVPNBLOCK"; 32  gOVPNNAT [ STRING_SIZE ] = "OVPNNAT"; 33  gWRAPPERVERSION [ STRING_SIZE ] = "ipfire-2.2.4"; 35  sci_ru { 36  mme [ STRING_SIZE ]; 37  mty [ STRING_SIZE ]; 38  mo [ STRING_SIZE ]; 39  mus [ STRING_SIZE ]; 40  mlol_subt [ STRING_SIZE ]; 41  msr_subt [ STRING_SIZE ]; 42  mre [ STRING_SIZE ]; 43  mpt [ STRING_SIZE ]; 44  ci_ru * mxt ; 47  ci_ru tci ; 49  $cursive_move_back (cڡ * h , cڡ  * sb ,  tyag ,  FTW * wbuf ) { 50  rv = `move ( h ); 51 i( rv ) 52 ` ( h ); 54  rv ; 55 } } 57  $cursive_move (cڡ * th ) { 58  `nw ( th , cursive_move_back , 64, FTW_DEPTH | FTW_PHYS ); 59 } } 61  $exhdr () 63 if( kv ) 64 `keyvues ( kv ); 65 i( ife ) 66 `fo ( ife ); 67 } } 69  $uge () 71 #ifde ovdebug 72 `tf ("W f OnVPN %s-debug\n", WRAPPERVERSION ); 74 `tf ("W f OnVPN %s\n", WRAPPERVERSION ); 76 `tf ("openvpnctrl