|  | @@ -478,24 +478,14 @@ function tor_add_bridge {
 | 
	
		
			
			| 478 | 478 |  
 | 
	
		
			
			| 479 | 479 |      apt-get -yq install obfs4proxy
 | 
	
		
			
			| 480 | 480 |  
 | 
	
		
			
			| 481 |  | -    if grep -q "ClientTransportPlugin" /etc/tor/torrc; then
 | 
	
		
			
			| 482 |  | -        sed -i 's|#ClientTransportPlugin|ClientTransportPlugin|g' /etc/tor/torrc
 | 
	
		
			
			| 483 |  | -        sed -i 's|# ClientTransportPlugin|ClientTransportPlugin|g' /etc/tor/torrc
 | 
	
		
			
			| 484 |  | -        sed -i 's|ClientTransportPlugin.*|ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed|g' /etc/tor/torrc
 | 
	
		
			
			|  | 481 | +    if [ ! -f /etc/torrc.d/bridges ]; then
 | 
	
		
			
			|  | 482 | +        { echo 'ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed';
 | 
	
		
			
			|  | 483 | +          echo 'UseBridges 1';
 | 
	
		
			
			|  | 484 | +          echo "Bridge $bridge_type ${bridge_ip_address}:${bridge_port} ${bridge_key}"; } > /etc/torrc.d/bridges
 | 
	
		
			
			| 485 | 485 |      else
 | 
	
		
			
			| 486 |  | -        echo 'ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed' >> /etc/tor/torrc
 | 
	
		
			
			| 487 |  | -    fi
 | 
	
		
			
			| 488 |  | -    if grep -q "UseBridges" /etc/tor/torrc; then
 | 
	
		
			
			| 489 |  | -        sed -i 's|#UseBridges|UseBridges|g' /etc/tor/torrc
 | 
	
		
			
			| 490 |  | -        sed -i 's|# UseBridges|UseBridges|g' /etc/tor/torrc
 | 
	
		
			
			| 491 |  | -        sed -i 's|UseBridges.*|UseBridges 1|g' /etc/tor/torrc
 | 
	
		
			
			| 492 |  | -    else
 | 
	
		
			
			| 493 |  | -        echo 'UseBridges 1' >> /etc/tor/torrc
 | 
	
		
			
			| 494 |  | -    fi
 | 
	
		
			
			| 495 |  | -
 | 
	
		
			
			| 496 |  | -    bridge_str="Bridge $bridge_type ${bridge_ip_address}:${bridge_port} ${bridge_key}"
 | 
	
		
			
			| 497 |  | -    if ! grep -q "${bridge_str}" /etc/tor/torrc; then
 | 
	
		
			
			| 498 |  | -        sed -i "/UseBridges/a ${bridge_str}" >> /etc/tor/torrc
 | 
	
		
			
			|  | 486 | +        if ! grep -q "Bridge $bridge_type ${bridge_ip_address}:${bridge_port} ${bridge_key}" /etc/torrc.d/bridges; then
 | 
	
		
			
			|  | 487 | +            echo "Bridge $bridge_type ${bridge_ip_address}:${bridge_port} ${bridge_key}" >> /etc/torrc.d/bridges
 | 
	
		
			
			|  | 488 | +        fi
 | 
	
		
			
			| 499 | 489 |      fi
 | 
	
		
			
			| 500 | 490 |  
 | 
	
		
			
			| 501 | 491 |      systemctl restart tor
 | 
	
	
		
			
			|  | @@ -508,24 +498,19 @@ function tor_remove_bridge {
 | 
	
		
			
			| 508 | 498 |      if [[ "$bridge_ip_address" == *"."* ]]; then
 | 
	
		
			
			| 509 | 499 |          bridge_str="Bridge $bridge_type ${bridge_ip_address}"
 | 
	
		
			
			| 510 | 500 |      else
 | 
	
		
			
			| 511 |  | -        if grep -q " ${bridge_ip_address}" /etc/tor/torrc; then
 | 
	
		
			
			|  | 501 | +        if grep -q " ${bridge_ip_address}" /etc/torrc.d/bridges; then
 | 
	
		
			
			| 512 | 502 |              bridge_str=" ${bridge_ip_address}"
 | 
	
		
			
			| 513 | 503 |          else
 | 
	
		
			
			| 514 | 504 |              return
 | 
	
		
			
			| 515 | 505 |          fi
 | 
	
		
			
			| 516 | 506 |      fi
 | 
	
		
			
			| 517 |  | -    if grep -q "${bridge_str}" /etc/tor/torrc; then
 | 
	
		
			
			| 518 |  | -        sed -i "/${bridge_str}/d" /etc/tor/torrc
 | 
	
		
			
			|  | 507 | +    if grep -q "${bridge_str}" /etc/torrc.d/bridges; then
 | 
	
		
			
			|  | 508 | +        sed -i "/${bridge_str}/d" /etc/torrc.d/bridges
 | 
	
		
			
			| 519 | 509 |      fi
 | 
	
		
			
			| 520 | 510 |  
 | 
	
		
			
			| 521 |  | -    # If there are no bridges remaining then remove UseBridges
 | 
	
		
			
			| 522 |  | -    if ! grep -q "Bridge " /etc/tor/torrc; then
 | 
	
		
			
			| 523 |  | -        if ! grep -q "#UseBridges" /etc/tor/torrc; then
 | 
	
		
			
			| 524 |  | -            sed -i 's|UseBridges|#UseBridges|g' /etc/tor/torrc
 | 
	
		
			
			| 525 |  | -        fi
 | 
	
		
			
			| 526 |  | -        if ! grep -q "#ClientTransportPlugin" /etc/tor/torrc; then
 | 
	
		
			
			| 527 |  | -            sed -i 's|ClientTransportPlugin|#ClientTransportPlugin|g' /etc/tor/torrc
 | 
	
		
			
			| 528 |  | -        fi
 | 
	
		
			
			|  | 511 | +    # If there are no bridges remaining then remove the file
 | 
	
		
			
			|  | 512 | +    if ! grep -q "Bridge " /etc/torrc.d/bridges; then
 | 
	
		
			
			|  | 513 | +        rm /etc/torrc.d/bridges
 | 
	
		
			
			| 529 | 514 |      fi
 | 
	
		
			
			| 530 | 515 |  
 | 
	
		
			
			| 531 | 516 |      systemctl restart tor
 | 
	
	
		
			
			|  | @@ -534,6 +519,8 @@ function tor_remove_bridge {
 | 
	
		
			
			| 534 | 519 |  function tor_create_bridge_relay {
 | 
	
		
			
			| 535 | 520 |      read_config_param 'TOR_BRIDGE_PORT'
 | 
	
		
			
			| 536 | 521 |      read_config_param 'TOR_BRIDGE_NICKNAME'
 | 
	
		
			
			|  | 522 | +    read_config_param 'MY_EMAIL_ADDRESS'
 | 
	
		
			
			|  | 523 | +
 | 
	
		
			
			| 537 | 524 |      if [ ! "$TOR_BRIDGE_PORT" ]; then
 | 
	
		
			
			| 538 | 525 |          return
 | 
	
		
			
			| 539 | 526 |      fi
 | 
	
	
		
			
			|  | @@ -546,47 +533,25 @@ function tor_create_bridge_relay {
 | 
	
		
			
			| 546 | 533 |  
 | 
	
		
			
			| 547 | 534 |      apt-get -yq install obfs4proxy
 | 
	
		
			
			| 548 | 535 |  
 | 
	
		
			
			| 549 |  | -    sed -i 's|#BridgeRelay.*|BridgeRelay 1|g' /etc/tor/torrc
 | 
	
		
			
			| 550 |  | -    sed -i 's|BridgeRelay.*|BridgeRelay 1|g' /etc/tor/torrc
 | 
	
		
			
			| 551 |  | -    sed -i 's|#ServerTransportPlugin.*|ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy|g' /etc/tor/torrc
 | 
	
		
			
			| 552 |  | -    sed -i 's|ServerTransportPlugin.*|ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy|g' /etc/tor/torrc
 | 
	
		
			
			| 553 |  | -
 | 
	
		
			
			| 554 |  | -    if ! grep -q 'ExtORPort ' /etc/tor/torrc; then
 | 
	
		
			
			| 555 |  | -        echo "ExtORPort $TOR_BRIDGE_PORT" >> /etc/tor/torrc
 | 
	
		
			
			| 556 |  | -    else
 | 
	
		
			
			| 557 |  | -        sed -i "s|#ExtORPort .*|ExtORPort $TOR_BRIDGE_PORT|g" /etc/tor/torrc
 | 
	
		
			
			| 558 |  | -        sed -i "s|ExtORPort .*|ExtORPort $TOR_BRIDGE_PORT|g" /etc/tor/torrc
 | 
	
		
			
			| 559 |  | -    fi
 | 
	
		
			
			| 560 |  | -
 | 
	
		
			
			| 561 |  | -    read_config_param 'MY_EMAIL_ADDRESS'
 | 
	
		
			
			|  | 536 | +    { echo 'BridgeRelay 1';
 | 
	
		
			
			|  | 537 | +      echo 'ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy';
 | 
	
		
			
			|  | 538 | +      echo "ExtORPort $TOR_BRIDGE_PORT";
 | 
	
		
			
			|  | 539 | +      echo "ContactInfo $MY_EMAIL_ADDRESS";
 | 
	
		
			
			|  | 540 | +      echo "Nickname $TOR_BRIDGE_NICKNAME"; } > /etc/torrc.d/bridgerelay
 | 
	
		
			
			| 562 | 541 |  
 | 
	
		
			
			| 563 |  | -    sed -i "s|#ContactInfo.*|ContactInfo $MY_EMAIL_ADDRESS|g" /etc/tor/torrc
 | 
	
		
			
			| 564 |  | -    if [ "$TOR_BRIDGE_NICKNAME" ]; then
 | 
	
		
			
			| 565 |  | -        sed -i "s|#Nickname.*|Nickname $TOR_BRIDGE_NICKNAME|g" /etc/tor/torrc
 | 
	
		
			
			| 566 |  | -        sed -i "s|Nickname.*|Nickname $TOR_BRIDGE_NICKNAME|g" /etc/tor/torrc
 | 
	
		
			
			| 567 |  | -    fi
 | 
	
		
			
			| 568 | 542 |      firewall_add tor_bridge "$TOR_BRIDGE_PORT" tcp
 | 
	
		
			
			|  | 543 | +
 | 
	
		
			
			| 569 | 544 |      systemctl restart tor
 | 
	
		
			
			| 570 | 545 |  }
 | 
	
		
			
			| 571 | 546 |  
 | 
	
		
			
			| 572 | 547 |  function tor_remove_bridge_relay {
 | 
	
		
			
			| 573 |  | -    if ! grep -q '#BridgeRelay ' /etc/tor/torrc; then
 | 
	
		
			
			| 574 |  | -        sed -i 's|BridgeRelay |#BridgeRelay |g' /etc/tor/torrc
 | 
	
		
			
			| 575 |  | -    fi
 | 
	
		
			
			| 576 |  | -    if ! grep -q '#ServerTransportPlugin ' /etc/tor/torrc; then
 | 
	
		
			
			| 577 |  | -        sed -i 's|ServerTransportPlugin |#ServerTransportPlugin |g' /etc/tor/torrc
 | 
	
		
			
			| 578 |  | -    fi
 | 
	
		
			
			| 579 |  | -    if ! grep -q '#ExtORPort ' /etc/tor/torrc; then
 | 
	
		
			
			| 580 |  | -        sed -i 's|ExtORPort |#ExtORPort |g' /etc/tor/torrc
 | 
	
		
			
			| 581 |  | -    fi
 | 
	
		
			
			| 582 |  | -    if ! grep -q '#ContactInfo ' /etc/tor/torrc; then
 | 
	
		
			
			| 583 |  | -        sed -i "s|ContactInfo |#ContactInfo |g" /etc/tor/torrc
 | 
	
		
			
			| 584 |  | -    fi
 | 
	
		
			
			| 585 |  | -    if ! grep -q '#Nickname ' /etc/tor/torrc; then
 | 
	
		
			
			| 586 |  | -        sed -i "s|Nickname |#Nickname |g" /etc/tor/torrc
 | 
	
		
			
			|  | 548 | +    if [ -f /etc/torrc.d/bridgerelay ]; then
 | 
	
		
			
			|  | 549 | +        rm /etc/torrc.d/bridgerelay
 | 
	
		
			
			| 587 | 550 |      fi
 | 
	
		
			
			|  | 551 | +
 | 
	
		
			
			| 588 | 552 |      read_config_param 'TOR_BRIDGE_PORT'
 | 
	
		
			
			| 589 | 553 |      firewall_remove "$TOR_BRIDGE_PORT" tcp
 | 
	
		
			
			|  | 554 | +
 | 
	
		
			
			| 590 | 555 |      systemctl restart tor
 | 
	
		
			
			| 591 | 556 |  }
 | 
	
		
			
			| 592 | 557 |  
 |